C++ 语句等效问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 12:32:15
#include <iostream.h>
#include<ctype.h>
{
char s[81];
cin.getline(s,81);
for(inti=0;s[i];i++)
s[i]=(islower(s[i])?toupper(s[i]:tolower))
cout<<s;
}
其中,
for(int i=0;s[i];i++) 可不可以改为
for(int i=0;i<81,i++)
为什么?

可以,s[i]和i<81都是在设定循环的边界,不满足条件时,循环结束.只是s[i]使用更灵活,当不确定字符串长度时,就只能用s[i].

你写的这句好像运行不了。

你输入的实际字符串大小不一定有80个for(int i=0;s[i];i++) 这样可以保证只对你所输入的串进行操作 for(int i=0;i<81,i++) 这句就会对不属于该串处理 造成一种越界 虽然后果看起来不太严重 可是这样你有可能把原来字符串的'\0'给去掉了 这问题就大了

不可以,除非一种情况下
如果这个数组存放40个字符
那个s[i]=40,遇到\0退出循环,那么就是循环40次而不是81
所以不可以用i<81

除非这个数组装满了