printf的前后问题

haime 2010-05-25 04:24:15
我举个例子,C代码如下:
#include<stdio.h>
main()
{

char x;
printf("本程序功能:任意输入一个字符,如果是字母字符,将其ASCII码值加5,使其在字母字符“a-z”之间变换并输出。例如字母“a”变成“f”,字母“z”变成“e”;");
printf("如果是数字字符,则将其ASCII码值减2,使其在数值“0-9”之间变换并输出。例如字符“9”变成字符“7”,字符“1”变成字符“9”。\n\n\n");
printf("请任意输入一个数字或字母字符:");
scanf("%c",&x);
if(x>='a'&&x<='z')
{
if(x>'u')
{
x=x-21;
printf("%c\n",x);
}
else
printf("%c\n",x+5);
}
else
if(x>='0'&&x<='9')
{
if(x<'2')
{
x=x+8;
printf("%c\n",x);
}
else
printf("%c\n",x-2);
}
}
你看红色部分两条说明这个程序功能的printf语句,像上面那样没错,可以运行。但是如果我把那两条printf语句放到char x;语句之前,也就是放在程序的一开始,那么这个程序就不对了,会报错,而且错误还不少,报的错都是有关于x的。
我想问的是问什么不能把这个printf语句放在最前面,而非要放在声明x之后???
...全文
201 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCPP_Rookie 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nbda1121440 的回复:]

引用 2 楼 wesleyluo 的回复:
难道你的C标准还是很老的,只能接受把 变量定义在程序开头处。

难道现在的C标准已经改了?
[/Quote]

看看C99标准。
周靖峰 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wesleyluo 的回复:]
难道你的C标准还是很老的,只能接受把 变量定义在程序开头处。
[/Quote]
难道现在的C标准已经改了?
CCPP_Rookie 2010-05-25
  • 打赏
  • 举报
回复
呵呵,微软的编译器对于*.C文件始终不支持随处定义变量的特性,必须在函数体最上面定义。
我倒觉得这是个比较好的编程习惯,这个函数会用到哪些变量一目了然。

不足就是,就算只想在循环中使用变量i,也不能用for(int i=0; i<10; i++){}

blh 2010-05-25
  • 打赏
  • 举报
回复
C要求变量申明应该在{}中的所有执行语句的前面
C++可以随用随定义
haime 2010-05-25
  • 打赏
  • 举报
回复
我用的是vc++2008速成版,难道它里面的C编译器不行。
我在改文件属性时,改成编译为C代码,后面还有个括号标注了TC,难道他用的是TC编译器?
zhaiershuaixu 2010-05-25
  • 打赏
  • 举报
回复
先定义变量了。
flydown 2010-05-25
  • 打赏
  • 举报
回复
确实是编译器的问题
huanmie_09 2010-05-25
  • 打赏
  • 举报
回复
编译器的问题。
变量先要进行声明。
wesleyluo 2010-05-25
  • 打赏
  • 举报
回复
难道你的C标准还是很老的,只能接受把 变量定义在程序开头处。
haime 2010-05-25
  • 打赏
  • 举报
回复
再补充一下,我用的是vc++2008速成版编写的。

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧