| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2395 人关注过本帖
标题:printf函数放在函数体变量声明等的最前面,出错;放后面又正常,求解……
只看楼主 加入收藏
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
printf函数放在函数体变量声明等的最前面,出错;放后面又正常,求解……
程序代码:
#include"stdio.h"
void main()
{
    printf("请输入一个小写字母:");
    char c;
    c=getchar();
    printf("原字母是:%c前导字母是:%c后续字母是:%c\n",c,c-1,c+1);
    printf("对应大写字母是:%c大写字母的前导字母是:%c大写字母的后续字母是:%c",c-32,c-33,c-31);
}
我将printf放在函数体的最前面,编译错误;而将它放在字符变量c声明和getchar等后面又正确了,为啥啊?
#include"stdio.h"
void main()
{
    char c;
    printf("请输入一个小写字母:");
    c=getchar();
    printf("原字母是:%c前导字母是:%c后续字母是:%c\n",c,c-1,c+1);
    printf("对应大写字母是:%c大写字母的前导字母是:%c大写字母的后续字母是:%c",c-32,c-33,c-31);
}
搜索更多相关主题的帖子: 声明 
2011-04-03 16:32
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
楼主的第一种情况没问题(gcc编译)
PS:提示什么信息呀

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-03 16:55
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

编译系统提示信息……
2011-04-03 17:00
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:5 
回复 楼主 dazhiye
我的一点拙见,首先,C是自上而下的执行,你现输入后声明貌似不符合语法吧应该,再次,都没人有这样的习惯

菜鸟一名,准备起飞
2011-04-03 18:17
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:4 
以下是引用小菜小C在2011-4-3 18:17:27的发言:

我的一点拙见,首先,C是自上而下的执行,你现输入后声明貌似不符合语法吧应该,再次,都没人有这样的习惯
代码写的多了,会发现这种习惯很自然的...
要不然 c99也不会SB似的加入这个功能。

我就是真命天子,顺我者生,逆我者死!
2011-04-03 18:27
vykylai
Rank: 2
等 级:论坛游民
帖 子:5
专家分:37
注 册:2011-3-27
收藏
得分:6 
C语言规定定义变量必须写在所在函数语句的开头。当然你如果用C++编译器编就没那种限制了。
2011-04-03 18:27
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
收藏
得分:0 
回复 6楼 vykylai
我试了几个程序,那个声明变量似乎确实必须放在函数体的开头,就算那个变量暂时用不到,都必须放到开头…
2011-04-03 20:05
dazhiye
Rank: 1
等 级:新手上路
帖 子:31
专家分:5
注 册:2010-1-18
收藏
得分:0 
回复 5楼 BlueGuy
我没先输入啊,我先输出的那个语句和下面的内容没什么必然的关系啊,我也可以把它写成一个和下面毫无关系的内容。而且变量声明我放在了使用它的语句的上面啊。谢谢参与解惑哈
2011-04-03 20:08
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
这或许跟编译器有关了

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-03 20:10
fhqbgmqj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:57
注 册:2010-5-7
收藏
得分:0 
C语言是面向过程的语言,在编译的时候是从上往下编译的,所以你把变量定义写在执行语句之后,编译器是不能识别到那个变量的。
2011-04-04 23:24
快速回复:printf函数放在函数体变量声明等的最前面,出错;放后面又正常,求解… ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020198 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved