一个C语言的基础问题

main()
{ int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}

一,为什么这里for语句后面也有分号?
二,执行结果是2+3,为什么for语句里i++每次带入的是自加后的值
而不是原值?
三,VisualC++软件里能不能使用printf语句?我记得那里面是>> <<这种符号表示输入输出的?

像n++这种问题我总是搞不明白在什么地方需要带入原值计算什么地方要自加1后再带入计算,求方法!

马上要考二级了,请高手帮助我回答完所有问题!剩余分全做酬谢了!!

解答:
1、 c语言是以分号做为语句的结束。for循环是一个语句所以就必须得有分号,不然编译无法通过,出现语法错误。for语句是循环条件和循环体的组合。你这里给出了循环条件,但是没有循环体。循环体为空。然后以分号表示这个for语句的结束。

如果你的循环体有多个语句可以用{}来括起来。

2、i++,存在语句当中的时候,它是先用i再自己增加1。当它单独存在的时候i++和++i是没有区别的。

你这里实际上是:
for(s=0;i=1;)
{
s+=i;
i++;
}
看见了吗?i++独自为一个语句。所以这里是单独使用。

3、c++是向下兼容c的。可以使用printf语句。c++中的cin和cout使用的是输入输出流。

你只要记住,当n++或者++n;单独存在(为一个独立的语句)的时候就自己加不需要管其它的。
当n++或者++n存在与其它函数,或者表达式(比如逗号表达式)当中的时候。就要按照书上介绍的方法去使用了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-04
一、简单地说
for(s=0,i=1;i<3;i++,s+=i);
等同于

for(s=0,i=1;i<3;i++)
{
s=s+i;
}
所以for后面有封号,以表示for循环中里面没有执行其他语句。
二、i++这样的语句是在同句语句中适用,到下一句时,i的值已经自加1了。
就是说比如i=1; j=i++;k=i;这时 j=1,k=2.因为k是下一语句。
三、VC++里对C语言是完全兼容的,就是说你可以用VC++编译C语言,自然可以使用printf语句。
第2个回答  2008-09-04
1.for()中本来就定义了有两个分号,分为三部分,第一部分是初始化,第二部分是for运行的条件,第三部分是当运行完for循环体后进行的操作,一般为循环变量控制.这两个分号是必须的,没有是编译不通过的.就算你没有第一部分还得写成
for(;...;...)即使是三部分都没有也不能省略得写成for(;;)
2.你程序i就没有自加.你程序是死循环,也别想有结果.
3.可以使用. 使用cout<<可输出. cin>>可输入. 光是>> << 没有用.
最后, ++n 是先加再算.n++ 是先算再加.
第3个回答  2008-09-04
一,为什么这里for语句后面也有分号?

因为要执行的语句,都已经在for(s=0,i=1;i<3;i++,s+=i)里面了,在后面加个";"号意思是什么也不做,只执行for(s=0,i=1;i<3;i++,s+=i)内的语句,直到i >= 3时跳出for循环

二,执行结果是2+3,为什么for语句里i++每次带入的是自加后的值
而不是原值?

因为在执行当前的i++;语句时,i就用当前本身的值,但是如果是执行i++;语句过后用到i的值时,i 的值就为 i=i+1;了。它是会改变原来的值的

三,VisualC++软件里能不能使用printf语句?我记得那里面是>> <<这种符号表示输入输出的?

在VC++里可以用printf语句,只要你包含所需的文件!VC++只是一个平台而已.
使用cout<<可输出. cin>>可输入(这是C++). 而">>" "<<"是位移操作符 .

像n++这种问题我总是搞不明白在什么地方需要带入原值计算什么地方要自加1后再带入计算,求方法!

n++是先使用n当前的值,再将n的值加1。
++n是先将n的值加1后再使用!
你可以这样理解:如果++在变量的后面的话,你就先用当前变量没有更改过的值,过后才自加1;如果++在变量的前面你就先将变量值自加1再使用!(加加在前就先加, 加加在后就后加)个人理解
第4个回答  2008-09-04
一、有分号相当于
for(s=0,i=1;i<3;i++,s+=i)
{}
你的这种写法是省略了后面的空语句

二、for进行了两次循环,第三次判断后退出循环
第一次: s=0,i=1, s+=i等价于 s=0+2=2;
第二次: s=2,i=2, s+=i等价于 s=2+3=5
第三次:i=3判断后退出循环
i++这种运算符是在参与运算的时候是原值,运算完成就自增1,所以第一次、第二次i++后,i就自增了1.如果i++参加了运算则在运算中保持原值,结束运算才自增。

三、在Visualc++中可以用printf语句,但是要包含头文件 #include <stdio.h>
>> << 这种符号是c++中配合cout<< cin>>的输入输出流的符号
相当于c中的printf scanf

就这样了
第5个回答  2008-09-04
怕楼上的这位没有看清楚吧!
其实这个程序和下面的是一样的
int main(void)
{
int s=0,i;
for(i=0;i<3;i++)
s+=i;
printf("%d\n",s);
return 0;
}
1.for语句后面的“;”的意思是什么都不做。因为它要做的是s+=i;已经在for(;;)里面做完了。
2.这个是后缀++的作用情况问题。 c语言里有规定是后缀的++要在结束标号之后生效。而“,”恰好就是它的结束标号。自然是自增后的结果了。
3.你学的是c,c的输出是可以有printf的。<<和>>是c++的写法。
相似回答