关于printf函数内数字的自增自减运算
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/10/04 21:22:46
关于printf函数内数字的自增自减运算
#include
main()
{ int i=8;
\x05printf("%1d\n%2d\n%3d\n%4d\n%5d\n%6d\n",i--,i--,i--,i--,i--,i--);
\x05printf("%d\n",i);
}
我在VC6.0中编译时得到的结果是
8
8
8
8
8
8
2
为什么最后一个是2 .
#include
main()
{ int i=8;
\x05printf("%1d\n%2d\n%3d\n%4d\n%5d\n%6d\n",i--,i--,i--,i--,i--,i--);
\x05printf("%d\n",i);
}
我在VC6.0中编译时得到的结果是
8
8
8
8
8
8
2
为什么最后一个是2 .
这个估计不是书本的例题吧?简单说下,首先要引入一个叫顺序点的概念,符号“;”就是一个顺序点,所有的自增自减操作都会在顺序点后完成.printf("%1d\n%2d\n%3d\n%4d\n%5d\n%6d\n",i--,i--,i--,i--,i--,i--);
printf("%d\n",i);这两个语句,第一个printf后就有一个顺序点了,所以所有的i--全部生效,一共自减六次,所以结果为8-6=2.不过不要有写语句printf("%1d\n%2d\n%3d\n%4d\n%5d\n%6d\n",i--,i--,i--,i--,i--,i--);这样的习惯,我们前面说了,符号'";"是一个顺序点,可是printf中各个i--之间并没有 顺序点,也就是每个i--输出的值都是不确定的(不知道输出之前i被自减了几次),你在VC6输出的都是8,你在gcc或者其他编译器的结果都是未知的.其范围在2-8之间都有可能.所以这是一个很不好的习惯.
printf("%d\n",i);这两个语句,第一个printf后就有一个顺序点了,所以所有的i--全部生效,一共自减六次,所以结果为8-6=2.不过不要有写语句printf("%1d\n%2d\n%3d\n%4d\n%5d\n%6d\n",i--,i--,i--,i--,i--,i--);这样的习惯,我们前面说了,符号'";"是一个顺序点,可是printf中各个i--之间并没有 顺序点,也就是每个i--输出的值都是不确定的(不知道输出之前i被自减了几次),你在VC6输出的都是8,你在gcc或者其他编译器的结果都是未知的.其范围在2-8之间都有可能.所以这是一个很不好的习惯.
关于printf函数内数字的自增自减运算
c语言自增自减运算题目 int x=5,y; y=2+(x+=x++,x+8,++x); printf("%d",y);
c语言 在函数中如果变量经过自加和自减运算后,函数执行完成后,经过自加和自减的变量会变成零?求解释啊
C语言的自增自减运算:x=3 ,y=-x+++x x等于多少?
关于太阳系内行星的自专问题
指针和引用的自增(++)运算意义不一样?
C语言指针的自增自减问题,急!
Matlab 编写自增函数
关于通信原理中的自相关函数
自增运算符要求运算对象是() A常量 B变量 C表达式 D标准函数
自( )自( )的成语
自编一首关于童年的小诗,要自编的.