C语言中复杂的数组增量
我不明白为什么在if语句++b[1]之前等于1,而在if语句++b[1]之后等于0。为什么++b[1]在if语句中没有增加C语言中复杂的数组增量,c,arrays,increment,C,Arrays,Increment,我不明白为什么在if语句++b[1]之前等于1,而在if语句++b[1]之后等于0。为什么++b[1]在if语句中没有增加 #include <stdio.h> int main() { int c = 0; int b[3] = {4}; printf("%d\n", ++b[1]); // return 1 b[1]--; if((c-- && ++b[1])|| b[0]++) { printf(
#include <stdio.h>
int main()
{
int c = 0;
int b[3] = {4};
printf("%d\n", ++b[1]); // return 1
b[1]--;
if((c-- && ++b[1])|| b[0]++)
{
printf("%d\n", b[1]); // return 0
printf("%d\n", c); // return -1
}
return 0;
}
#包括
int main()
{
int c=0;
int b[3]={4};
printf(“%d\n”,++b[1]);//返回1
b[1]——;
if((c--&&&++b[1])|b[0]++)
{
printf(“%d\n”,b[1]);//返回0
printf(“%d\n”,c);//返回-1
}
返回0;
}
c--
产生0
,因此不计算++b[1]
这被称为。这里只是一些令人困惑的操作符用法
是后缀减量,因此在条件语句中c--
在被减量之前被计算为false(正如c
)李>0
- 现在,由于
短路,并且只有在第一个条件为真时才计算第二个条件,因此我们不计算&&
,而是根据++b[1]
的真实性输入条件李>b[0]+
if((c-- && ++b[1])|| b[0]++)