关于c语言中的定义int类型的常量

inta=0x12345678int可以单独这样定义吗?inta=0x12345678;charb;b=(((unsignedchar*)&(a))[0]);//另外麻烦... int a = 0x12345678

int可以单独这样定义吗?

int a =0x12345678;
char b;

b = (((unsigned char *)&(a))[0]); // 另外麻烦帮我解释下这句的意思和关系。
展开
 我来答
风若远去何人留
推荐于2017-09-21 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450108
专业C/C++软件开发

向TA提问 私信TA
展开全部

可以这样定义 但行尾必须加分号。

不过你这样定义的是变量 并不是常量

要定义常量可以写为

const int a = 0x12345678;

或者直接用宏定义

#define CONST_A 0x12345678

PS:宏定义时无需加分号



int a =0x12345678;//定义一个变量a 并赋值为0x12345678. 这时会给a分配一个sizeof(int)的空间,一般为4
    char b;  //定义字符变量b     
                  
    b = (((unsigned char *)&(a))[0]);
    //这个需要分几步来理解
    //&(a)取a的地址
    //((unsigned char *)&(a)) 把它转换成无符号字符型指针
    //这个指针是指向a的首地址的 所以 这个无符号字符型指针指向的区域就有和a同样的值
    //即四个字节,分别为0x12 0x34 0x56 0x78
    //((unsigned char *)&(a))[0] 取第一个值 即0x12
    //所以最终b的值为0x12
Brooklebu
2014-12-20 · TA获得超过281个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:298万
展开全部
可以,这是给a赋一个十六进制的值。
第二句要这么分析,先看括号里的
那么就是将a取其地址后强制转换成无符号char指针,然后把这个指针指向的地址的第一个char值赋给b。
也就是假如a占四个字节,b取它的第一个字节的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜礼服假面MP
2014-12-20 · TA获得超过3437个赞
知道大有可为答主
回答量:1034
采纳率:77%
帮助的人:347万
展开全部
可以这样定义

int a =0x12345678;表示a的值为十六进制的12345678

b = (((unsigned char *)&(a))[0]);

将a的内存地址指针转换为unsigned char *,并取第0号元素值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大力金刚神1
2014-12-20 · TA获得超过1.4万个赞
知道小有建树答主
回答量:1410
采纳率:0%
帮助的人:1223万
展开全部
可以 0x代表16进制,但是你写的0x12345678超过了int大小范围,必须改小才能正常使用。

b = (((unsigned char *)&(a))[0]);
unsigned char*是无符号字符指针型,在这里对把数组a用&取地址,强制转换成了unsigned char*,然后对它进行取第一个数,就相当于取出a数组第一个数通过ascii码转换成字符保存在b中,
例如
int a[2]={65,68};
char b;
b = (((unsigned char *)&(a))[0]);
printf("%c",b);
输出就会是A,因为65是A的ascii码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-10-07 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:868万
展开全部
1、定义常量可以写为
const int a = 0x12345678;
或者直接用宏定义
#define CONST_A 0x12345678
2、常量整体上分两类,一类是整型常量,一类是浮点型常量。细致上分,整型常量还包括字符常量、字符串常量。
①. 整型常量 如6,27,-299
②. 浮点型常量 如5.43,-2.3,5.43F(单精度)、2.3f(小写的f也可以)
③. 字符常量 如‘6’,‘a’,L'中'(宽字符常量)
④. 字符串常量 如“6”,“男”,“nanabc”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式