关于++混合操作,不同计算结果推理
第一种编译结果:
int i = 5;
int sum = (++i) + (++i)
= 6 + 7
= 13
第二种编译结果:
int i = 5;
int sum = (++i) + (++i)
= 6 + 7
= 7 + 7 前面的7是因为后面i的变化被影响后,重新赋值
= 14
第一种编译结果:
int i = 5;
int sum = (++i)+(i++)
= 6 + 6
= 12
第二种编译结果:
int i = 5;
int sum = (++i)+(i++)
= 6 + 6
= 7 + 6 前面的7是因为后面i的变化被影响后,重新赋值
= 13
int i = 5;
int sum = (i++) + (i++)
=5 + 6
=11
int i = 5;
int sum = (i++) + (++i)
=5 + 7
=12
在虚拟机gcc编译,当++i在前会被后面的i影响,i++在前不会被影响。
#include<stdio.h>
int main()
{
int i = 3;
int ret1 = (i++)+(i++);
printf("ret1:%d,i:%d\n",ret1,i);
int ret2 = (i++)+(++i);
printf("ret2:%d,i:%d\n",ret2,i);
return 0;
}
/***********************************
输出结果:
ret1:7,i:5
ret2:12,i:7
************************************/
注意:
算数运算符,运算结果是数值类型
关系运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)
逻辑运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)