二级C语言解答下,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:39:55
int a=1
printf("%d,%d,%d\n",a+2,a-=1,a++);
输出的结果为多少?
我知道先算a++,但不知道下一个该算什么,
还有我知道"%d"是修饰字符和格式字符,但不知道%d\n(d是十进制形式我知道)是什么意思,知道的回下,谢谢了
都不知道你们说的谁是对的了...
为什么是右到左运算,换行的作用又是什么,越问越惑了...

Dev C++ 4.9.9.2 运行结果是,
3 1 1
如下:
int main(int argc, char *argv[])
{
int a=1;
printf("%d,%d,%d\n",a+2,a-=1,a++);

system("PAUSE");
return 0;
}

居然没人跟我一样,大概是编译器不同,运行顺序有所区别,据我所知,Dev c++ 算是 最严格遵守C++语法的编译器了。

C语言里,函数调用时,参数的传递顺序是,从右向左一个一个传。所谓参数传递,就是先将参数压栈,然后再把堆栈的指针交给调用的函数。
因为c在将参数压栈时,是用右向左压,因此靠后的参数先被处理。
1 a++ 的结果是“1”,但a的值变为“2”
2 a-=1( a=a-1) 的结果是 1, a的值变为1
3 a+2 等于3 。

要注意到 printf()本身就是函数。
/n 是回车

\n是回车+'0',也就是换行
a+2为什么是2我不清楚,我把a-=1,a++删除了结果是3,奇怪。。。
a-=1就是a=a-1就是0
a++前面的a=0了然后自加1运算所以这里是1

2,0,1

因为TC是从右到左的方向
a++,先使用a,使用完后再+1,
所以它传到a-=1的时候还是1-1
然后a=0了,a+2就是2

我理解得就这些了,不知道对不对

呵呵,我来解释下,不对别拿砖头扔我.%d是输出格式控制符,表示10进制整型,\\n表示回车换行,输出结果是3 2 2,输出后计算a++,a=3,

2,4,3

干嘛不自己运行一下,实践是检验真理的唯一标准,呵呵,我在自己的TC 上运行得到的是:3,1,1

2 0 1