C语言强制类型转换遇到的问题

yunmenggyy 2012-08-10 12:14:35
各位牛人请看以下代码:
int array[]={23,34,12,17,204,99,16,882};
#define Total (sizeof(array)/sizeof(array[0]))
#include<stdio.h>
main()
{
int d=-1,x;
if(d<=Total-2) x=array[d+1];
printf("%d\n",x);
}
这个程序在运行的时候if后括号里面判断的是假,书上是这么解释的:
因为sizeof返回的是无符号的数字,if比较的实际上是signed和unsigned型。unsigned型升级为signed
而d转换成无符号的数是一个,故判断结果为假。
问题:
我通过 unsigned int m=(unsigned int)-1;
printf("%d",m);
获取这个“非常大的整数”时,并未成功,请问这是为什么?
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunmenggyy 2012-08-10
  • 打赏
  • 举报
回复
哎呀,是的,这都没注意,呵呵,谢啦
fzamygsd 2012-08-10
  • 打赏
  • 举报
回复
以%d格式输出你能得到吗

69,373

社区成员

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

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