鱼C论坛

 找回密码
 立即注册
查看: 3460|回复: 9

C语言新手求教各路大神。

[复制链接]
发表于 2013-8-28 17:23:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

这个是双引号的运行后情况

这个是双引号的运行后情况
  这个是双引号运行后程序情况; 单引号.jpg 这个是单引号运行后程序情况。
      今天学字符输入输出,题目要求 先后输出BOY三个字符。 程序编写如下:
#include<stdio.h>
int main()
{
char a='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
其他我都能明白,但倒数第三行的putchar('\n')里面为什么是单引号呢?平时的printf后面的表达式语句里最后结尾的都是双引号的,像这样 printf("%d\n",a);   为什么这里双引号就不对呢?我用双引号试了下,出现的是是后面有个D字母,求解释下为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-28 17:32:23 | 显示全部楼层
我的双引号编译不了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 17:32:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 17:34:27 | 显示全部楼层
我的也是vc6.0
putchar()只能输出单个字符,双引号里是两个字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 17:41:33 | 显示全部楼层
liufei_vip 发表于 2013-8-28 17:34
我的也是vc6.0
putchar()只能输出单个字符,双引号里是两个字符。

意思是说双引号里要包含的必须是两个字符及以上么?但它哪里蹦出来的一个D字母呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 17:54:36 | 显示全部楼层
With_You 发表于 2013-8-28 17:41
意思是说双引号里要包含的必须是两个字符及以上么?但它哪里蹦出来的一个D字母呢?

不知道啊,我的都不能编译运行。。。
双引号里也可以有一个字符。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 18:37:40 | 显示全部楼层
liufei_vip 发表于 2013-8-28 17:54
不知道啊,我的都不能编译运行。。。
双引号里也可以有一个字符。。。

我彻底昏了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 18:40:00 | 显示全部楼层

双引号是包含字符串的,字符串可以是一个字符。。。
就是数组可以只包含一个元素一样。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 19:55:28 | 显示全部楼层
这个很容易解释
双引号里面,最后是有一个 \0的。
比如说 “he”,看上去是两个字符,但是其实是三个空间
你可以测试一下
sizeof("he")
看看这个是几。
肯定是3。

而你刚才说的 ' ' 里面的东西,就是一个字符而已,所以可以直接用putchar。


另外要注意了,在工程里面经常会由于这个而出错。
比如说,在工程里面,需要定义一个密码,
char usrpassword[32];
这里密码要求是不能高于32位, 但是有的程序员会认为,那就是要求密码的位数小于等于32位呗。
其实不然啊,因为“a”其实是两个字符,而如果是“aaa~~~~~aa”一共32个a的话,那么其实有33个字符,所以就超出了数组的大小,这样的话,就会访问到非法的内存,这样的话,就会出现segmen fault,程序中断了,这就是个致命错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 20:13:28 | 显示全部楼层
wangjie5540 发表于 2013-8-28 19:55
这个很容易解释
双引号里面,最后是有一个 \0的。
比如说 “he”,看上去是两个字符,但是其实是三个空间 ...

大概明白一点了,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 08:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表