|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
char c = 'k';
int i = 1,j = 2,k = 3;
float x = 3e+5,y = 0.85;
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
有个问题是最后一句的(j=8)这里怎么理解,在这里=应该是赋值的意思还是等于的意思?前面2已经赋值给j,现在(j=8)是又把8赋值给j吗?还是说j的值是2不等于8,然后输出0?
i==5&&c&&(j=8)这里的(j=8) 是一条赋值语句,赋值语句意味着前面的 j=2 将被覆盖
这条语句的返回值就是8
但是因为 i==5&&c&&(j=8) 等价于
(i==5) && c && (j=8)
由于&&存在逻辑短路,也就是前面的为假后面的就不计算了
而 i==5 签好不成立,为假,所以 j =8 这条赋值语句被无情的忽视了
这整条语句的返回值为0,所以打印的结果就是0
|
|