前言:当我们学习操作符尤其到了研究关于算数题时非常头疼,今天帮助大家解决这些问题
首先我拿出一段代码,接下来的研究都会根据这段代码来进行:
#include<stdio.h>
int main()
{
int a=0;b=0;c=8;
int d;
d=a++||b++&&c++;
// 这里运行的步骤是先判断a=0为假,然后再a+1,继续往后判断
// b=0,为假,b+1,看到&&直接整个式子为假 0
// &&往后的c++不进行运算
printf("a=%d,b=%d,c=%d",a,b,c);
// 输出:a=1,b=1,c=8
printf("\nd=%d",d);
//输出:d=0
return 0;
}
将上面的代码稍微改一点:
#include<stdio.h>
int main()
{
int a=0;b=0;c=8;
int d;
d=++a||b++&&c++;
//与上面第一个代码不同的a++变成了++a,所以a先++变成1,那么||左边为真
//注:由于||左边已经为真,则后面一概不做判断
//由此:d=1
printf("a=%d,b=%d,c=%d",a,b,c);
// 输出:a=1,b=0,c=8
printf("\nd=%d",d);
//输出:1
return 0;
}
重新来一段代码:
#include<stdio.h>
int main(void)
{
while(1)
{
int a = 2;
a||(a=3);
printf("%d",a);//结果为2,因为判断||左边的时候为真,所以右边的就不判断了,所以a为2。改成&&就是3了
}
return 0;
}
如果觉得自己会了,就拿下面这个题练一练吧:
#include<stdio.h>
int main()
{
int x = 0; int y = 5; int z = 3;
while (z-- > 0 && ++x < 5)
y = y - 1;
printf("%d, %d, %d\n", x, y, z);
}
答案:3,2,-1