->1.&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。
->2.A.C中=和==的意思不同,=是赋值,==是等于.
B.一个是等,一个是不等.
C.IF(A)的意思就是A不等于0时执行
->3.除法运算符"/"双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型
->4.题目有误,c变量是什么意思??没定义嘛
用2个变量的方法写给你好了,a=a+b,b=a-b,a=a-b
假设A=2 B=3 用上面的做法 1.a=a+b a=5,b=3
2.b=a-b 5-3=2 b=2
3.a=a-b 5-2=3 a=3
第一题,想象一下,C编译器面对这个等式的时候如何判断?他将可能的等式:
j++,k++,i++以及||和&符号压入栈中,依次弹出。先是j++,为真, 下一个符号||,就可以直接跳过 k++,最后遇到&,再执行i++。
第二题,C中不为0就是真的。FALSE=0,TRUE=~FALSE
第三题,/什么时候取整啦?。。整数相除的就取整,浮点数相除,自然就取浮点呗
第四个题是很经典的,不过我也忘了。这里还有一个更有趣的算法:
a=a ^ b
b=a ^ b
a=a ^ b
1 这里k值变为3了,但是要在下条语句执行的时候,这里if((j++||k++)&&i++) printf("%d,%d,%d\n",i,j,k);是一个语句
2 A第一句就是个错误 赋值语句不能作为判断条件不过可以输出a=2 第二句是对的但是a的值不定(因为没有赋值)
B和A差不多
3 这里是浮点数运算
4 a=a+b;//a的值就是a跟b的和
b=a-b//因为a的值是a跟b的和,此时b的值就是a;c=a-b这句你打错了吧?应该是
a=a-b
第一题:
( j++ || k++ ) && i++ ) // (J加一 或 K加一)和I加一
J或K两者其中一个加一!I是和所以括号里的和后面的都执行!或(||)两者执行一个
第二题:
A:执行语句 和 判断语句
B:同上
C:赋值 和 判断语句
第三题:
(“/”)表示除
第四题:
不知道
1.if((j++||k++)&&i++)
|| 先判断左边的表达式,如果左边的为真就不判断右边的表达式了。j++为真,所以不执行k++,&&右边i++要执行,所以 答案c
2.应该没有答案
A)if(a=2) printf("%d\n",a); 赋值语句,c中表达式也是有值的,a=2的值是2,所以为真。
if(a==2) printf("%d\n",a); 这个是a==2 如果a为2的时候为真,否则是假
B)if(a=2) printf("%d\n",a); 跟上面一样
if(a!=2) printf("%d\n",a);a不等于2,就是当a是2的时候为假,否则为真
C)if(a) printf("%d\n",a); c语言中大于0的值就是真
if(a!=0) printf("%d\n",a); 判断a不等于0就是真。如果a为负数,这个判断也是成立的,所以c也是错的
3.输入2.0
4.a=a+b;//a的值就是a跟b的和
b=a-b//因为a的值是a跟b的和,此时b的值就是b;c=a-b//此时c的值就是b
1。因为if((j++||k++)&&i++) 中 j++为ture则不必判断“||”后面的表达式 则没执行k++故k=2;
2.A.B的if都是经过赋值运算的 而你看c呢 当然语义不同了;
3。你说的“\”取整是针对int而言 这里是float 所以当然该有小数值
4。实在不晓得在表达什么~
(希望能帮助到你)