C++运行没问题,但有2个warning,弄好他

#include<stdio.h>intmain(){charx=0x90;printf("%d",x);return0;}TC.CPP(4):warningC4305:... #include<stdio.h>
int main()
{
char x =0x90;
printf("%d",x);
return 0;
}
TC.CPP(4) : warning C4305: 'initializing' : truncation from 'const int'
TC.CPP(4) : warning C4309: 'initializing' : truncation of constant value
TC.OBJ - 0 error(s), 0 warning(s)
展开
 我来答
lb375
2011-05-27 · TA获得超过181个赞
知道答主
回答量:38
采纳率:0%
帮助的人:39.1万
展开全部
Hi,

并不是特别清楚 这两个warning什么意思, 但是在我这里 没有warning,我用的是 32位 linux平台,编译命令: > gcc -Wall test.c

十六进制 0x90 才144,而且 2位十六进制数,最大就是255。一位十六进制数4个bits, 两位十六进制数正好1个byte,也就是一个char所占的大小
qzhao_1
2011-05-27 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4428万
展开全部
你定义的 x 为 char 类型,可是你输出的格式却用的是 %d 十进制输出的呀。类型不匹配。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4230787
2011-05-27
知道答主
回答量:12
采纳率:0%
帮助的人:6.4万
展开全部
一个字节的char型转成int最大也只是255,而十六进制的0x90比255大多了,不是char能表示的范围。
不过你的源程序我运行只有一个警告,就是我上面说的那个,改了之后就没有警告了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
panweiy
2011-05-27 · TA获得超过1239个赞
知道大有可为答主
回答量:760
采纳率:0%
帮助的人:722万
展开全部
/*显式地强制转换....这样一来就不会有warming了.*/
#include<stdio.h>
int main()
{
char x =0x90;
printf("%d",(int)x);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a3722676e
2011-05-27 · TA获得超过1216个赞
知道小有建树答主
回答量:957
采纳率:0%
帮助的人:868万
展开全部
char x
换成 unsigned char试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式