前言:当我们学习操作符尤其到了研究关于算数题时非常头疼,今天帮助大家解决这些问题

首先我拿出一段代码,接下来的研究都会根据这段代码来进行

#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