C语言里的自增函数

发布时间:2024-05-15 04:21 发布:上海旅游网

问题描述:

刚学到这里 开始不明白自增函数的意思了
说是M++是M+1吗? 那M等于3时 M++ 是多少?
提问不当 是a=m++ m=3 a=多少?

问题解答:

举个比较容易懂的例子。如a=M++;那么a=M,M=M+1。M=3时,a=3,M++为4,即M=M+1=4。

你刚才问的解答一下

a=x++; a=x=3,x=x+1=1+3=4;
b=x++; b=x=4,x=x+1=4+1=5;
c=x++; c=x=5,x=x+1=5+1=6;
故 x=6,m=a+b+c=3+4+5=12。

M++等价于M=M+1 M等于3时,M++等于M=3+1=4
a=m=4
你去看一下运算符的优先级就知道了

M等于3时 M++ =4

a=3
++放后面的是先用M再加加,

只要搞清楚++m和m++这两个概念你就明白了
m = 3;
n = 3;
a = m++;
b = ++n;
此时a为3,m为4,b为4,n为4.
a = m++;
++运算符在后表示先计算,后自加:
上表达式可分解为:
a = m;
m++;
++预算符在前表示先自加,后计算:
上表达式可分解为:
n++;
b = n;

To tanyuguo:

m++
等价于
{
temp=m;
m=m+1;
return temp;
}

一般情况是这样,但并不是所有时候都这样。
例如,m=3.调用printf("%d,%d\n", m + 3, m++);
有的编译器产生的代码输出8,3。如果后置++如你所说,那结果应该是9,3

--------------------------------------
编译器并不为后置++产生独立的代码,到底行为如何,要看具体情况。为运算符产生的代码因环境不同而不同,编译器制造者只要遵守C标准规定即可。后置++是无法简单概括成一个等价的行为的。

热点新闻