您的位置:首页 > 编程语言 > C语言/C++

C/C++程序设计基本概念

2016-03-23 22:06 295 查看
for循环的执行顺序

for循环的执行顺序用如下表达式:
<span style="font-size:14px;">for(expression1;expression2;expression3)
{
expression4;
}</span>

执行的顺序应该是:

1)第一次循环,即初始化循环。

首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。

2)第N(N>=2)次循环

首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足在expression2条件是为止。

总结:

总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复......区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),后续的判断对象为执行后的结果(expression3)。

printf函数对参数的计算顺序,是从右往左的

首先,应该说明的是在不同的编译环境中结果是不一样的。

关于本段代码在VC++6.0中的规则如下:

1、printf函数的执行顺序是由右到左的

2、前自增运算符(++i)先加1,再使用i,此时i已经加了1;

3、后自增运算符(i++)先使用i,再加1,***注意这里是关键所在,VC++6.0后自增运算是要在整条语句结束以后才自加1的!

<span style="font-family:Times New Roman;">#include<stdio.h>
void main()
{
int i=2;
printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
printf("%d\n",i);
} </span>

所以:

printf("%d,%d,%d,%d,\n",i++,++i,i,i++);

从右往左运算:

i++得到2(i=2,后加1在整条语句执行完才进行,这里先记下)

i还是2 (i=2,原因见上一行)

++i得到3(i=3,先加1,后使用)

i++得到3(i=3,后加1在整条语句执行完才进行,这里先记下)

所以输出结果为:3,3,2,2

然后计算刚才的两次后自增运算后,i=5

printf("%d\n",i);

所以,结果是5

-----------------------------------------------------------------------------------
另外关于下面程序的解释:

int i=7; printf("%d\n", i++ * i++);

输出结果是:49而不是56

int i=7;printf("%d %d\n",++i,i++);

输出结果是:8 7而不是9,7 这并不违背分割新上面关于printf函数从右向左计算的原因。

总结:到这里,要掌握的是两点,

一是:printf函数中的计算是从右向左进行的。

二是:我们在写代码时,应该尽量避免类似下面的无确定意义的表达式出现,因为很有可能不同的编译器,会采用不同的理解方式。

例如:

a+=a++;

a[i]=i++;

printf("%d %d\n",++i,i++);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++语言