为您找到"
int a,b,c; a=b=c=1; ++a||++b&&++c ,请解来看看?
"相关结果约100,000,000个
于是++a是||的前半部分.而++a的值此时是2,a的值就是2,即为真.于是就不做后半部分的运算. 也就没有++b&&++c的运算.于是b,c的值还是都为1. 这下明名为什么是a=2 b=1 c=1,而不是a,b,c都为2的原因了吧.
当然不是这样。在c语言中,&&的优先级比||高,所以当这两个一起出现的时候,是先算&&再算||, 当然,||在c语言也有个陷阱。就是当||的前半部分为真的时候,就不执行后半部,只有前半部分为假的时候才执行后半部分。
优先级 ++ > && > || 可以看成++a || (++b && ++c),因为++a已经==2 > 0 因此,后面不再计算。 即a = 2, b= 2 ,c =3
C语言会同意一些"令人震惊"的结构,下面的结构是合法的吗,我们来看看几个例子。 c = a+++b; 以下代码是合法的吗,咋的一看不禁有这样的疑问?int a = 5, b = 7, c; c = a+++b; 这个代码确实不咋符合习惯的写法,但是不管你相不相信,上面的例子是完全合乎语法的。
一、运算符 基本运算 下表显示了 c 语言支持的所有算术运算符。假设变量 a 的值为 10,变量 b 的值为 20,则: 运算符 描述 实例 + 把两个操作数相加 a + b 将得到 30 - 从第一个操作数中减去第二个操作数 a - b 将得到 -10 * 把两个操作数相乘 a * b 将得到 200 / 分子除以分母 b / a 将得到 2 % 取模运算符 ...
A)!a= =1 为0,!b= =0 为0 0&&0 为0. B)a<b为1 ! c为0,(a<b)&&! c为1,(a<b)&&! c ‖ 1为1. C)a && b 为1. D)b+b为1 (c-a)为1 (b+b)&&(c-a)为1 a ...