关于前置运算符和后置运算符在c语言里的复合运算
- test.1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void main()
{
int a=2, p;
p = (a++) + (a++) + (a++);
printf(“a=%d,p=%d\n”,a,p);
int b=2, q;
q = (++b)+(++b)+(++b);
printf(“b=%d,q=%d”,b,q);
}
主要是对这里前置运算符的运算逻辑不理解
我原来的理解是
b=2;
q=(++b)+(++b)+(++b);
自右向左运算,
1.最右边++b先将b自增加1,再进行运算
\:\:
开始b=2
\:\:
自增加1
\:\:
b=3
\:\:
得 q=(++b)+(++b)+3;
2.后面一个++b继续
\:\:
b=3
\:\:
自增加1
\:\:
b=4
\:\:
得 q=(++b)+4+3;
2.后面一个++b继续
\:\:
b=4
\:\:
自增加1
\:\:
b=5
\:\:
得 q=5+4+3;
\qquad
q=5+4+3=12
≠
15
\not=\!\!15
=15
- 于是继续test.2
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void main()
{
int b=2,q;
q=(++b)+(++b);
printf(“b=%d,q=%d”,b,q);
}
- test.3
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void main()
{
int b=2,q;
q=++b;
printf(“b=%d,q=%d”,b,q);
}
- 猜测:c语言里q=(++b)+(++b)+(++b);是先将++b运算完,再将最终得到的b相加
即从右开始计算
第一个++b ⇒ \Rightarrow ⇒b=3
第二个++b ⇒ \Rightarrow ⇒b=4
第三个++b ⇒ \Rightarrow ⇒b=5
再把最终得到的b=5相加
得q=5+5+5=15