C++菜鸟级小问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:15:55
#include<iostream>
using namespace std;
int main()
{
for (int i=32;i<128;i++)
{
cout<<(char)i;
}
return 0;
}

#include<iostream>
using namespace std;
int main()
{
for (int i=32;i<128;i++);
{
cout<<(char)i;
}
return 0;
}
为什么两次运行的结果不一样呢??
只是在第5行for(int i=32;i<128;i++)最后一个有“;”一个没有

如果在for()后面加了分号,说明该for循环不执行任何语句,只是在做空循环,当i的值为128时,不满足小于128,退出循环,此时i=128,而将i强制转换为字符型后,ASCII码128对应的字符是(见图)

如果在for()后面没有加分号,这它包含语句cout<<(char)i;,即每执行一次循环,都输出一个字符,直到输出ASCII码128对应的字符结束

for后面加了分号则包含在for里面的语句就是空语句,cout是不属于for循环体的。所以你的cout只执行一次,输出127

如果你在;前在加个{,在return前加个},这样两个程序的输出结果就相同了。
原因:c/c++的语句是可以写在一行中,你在for后面加个;,默认的就是for循环的时候什么事都不做。

加了分号后就意味着循环已经结束啦。。你的FOR什么都没用。。所以用FOR循环的时候是不能用

加了;符号的,它的循环体就是一个空语句
而没有加;符号的