| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 722 人关注过本帖
标题:字符赋值问题求答案!!!
只看楼主 加入收藏
洁士铭
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-12-25
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:13 
字符赋值问题求答案!!!
#include<stdio.h>
int main()
{
    char a='65';
    printf("%c\n",a);
    return 0;
}

为什么这个程序执行之后结果是5不是6!!!
搜索更多相关主题的帖子: return 
2014-01-06 15:56
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
单字符格式应该是'6', '5',或者a=65;
''只能包含一个字符,
对于'65', 结果取决于编译器. 有的编译器='6'+'5', 有的编译器则取最后一个字符'5'.
2014-01-06 16:02
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
收藏
得分:0 
个人理解:


   -------同上

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-01-06 16:05
浩皓好
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-27
收藏
得分:0 
回复 楼主 洁士铭
好像
是因为
字符变量占一个字节
而数字占两个字节
所以只把低8位赋给字符了
2014-01-06 16:08
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
以下是引用pangshch在2014-1-6 16:02:59的发言:

单字符格式应该是'6', '5',或者a=65;
''只能包含一个字符,
对于'65', 结果取决于编译器. 有的编译器='6'+'5', 有的编译器则取最后一个字符'5'.

''只能包含一个字符, ???真的吗

C 使用int类型来处理字符常量,而不是 char 类型。
8位表示一个ASCII码,也就是一个字符
而在32位内存单元中,char 类型最多能放 4 个 8 位,也就是定义时单引号内最多只能放四个字符,多了就会出错

你可以定义成这样调试下  char a='12345';

char a='65';用这种定义方法,字符变量只能得到字符常量的最后 8 位。也就是 5

三十年河东,三十年河西,莫欺少年穷!
2014-01-06 16:43
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
以下是引用韶志在2014-1-6 16:43:11的发言:

 
''只能包含一个字符, ???真的吗
 
C 使用int类型来处理字符常量,而不是 char 类型。
8位表示一个ASCII码,也就是一个字符
而在32位内存单元中,char 类型最多能放 4 个 8 位,也就是定义时单引号内最多只能放四个字符,多了就会出错
 
你可以定义成这样调试下  char a='12345';
 
char a='65';用这种定义方法,字符变量只能得到字符常量的最后 8 位。也就是 5
建议你看一下<C陷阱与缺陷> 第1.5节 字符与字符串
2014-01-06 16:53
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 6楼 pangshch
没有这本书怎么办?

三十年河东,三十年河西,莫欺少年穷!
2014-01-06 17:00
洁士铭
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-12-25
收藏
得分:0 
回复 5楼 韶志
我试了下将char a='65'改成char a='12345',但是这样编译器会报错
2014-01-06 17:06
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:10 
以下是引用韶志在2014-1-6 17:00:24的发言:

没有这本书怎么办?
贴不了图片, 就把原话写上来:
    译注: 在Borland C++ v5.5和LCC v3.6中采取的做法是, 忽略多余的字符, 最后的整数值即第一个字符的整数值; 而在Visual C++ 6.0和GCC v2.95中采取的做法是, 依次用后一个字符覆盖前一个字符, 最后得到的整数值即最后一个字符的整数值.
2014-01-06 17:08
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 9楼 pangshch
对啊   那你为什么说  ''里面只能包含一个字符...

三十年河东,三十年河西,莫欺少年穷!
2014-01-06 17:18
快速回复:字符赋值问题求答案!!!
数据加载中...
 
   



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

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