首页 热点资讯 义务教育 高等教育 出国留学 考研考公

int a='0x22' int a="0x22" 分别是什么意思?感谢回答!

发布网友 发布时间:2024-12-27 04:29

我来回答

3个回答

热心网友 时间:2024-12-31 13:55

你这两个写法都不对啊,你要定义十六进制的数的话,不能加双引号或单引号直接这么写:
int a = 0x22;

热心网友 时间:2024-12-31 13:55

#include <stdio.h>
int main(void)
{
int a='0x22';
int b="0x22";
printf("a is %d, b is %d \n", a, b);
return 0;
}
我试了一下,在GCC环境下,编译有2个警告:
test.c:5:8: warning: multi-character character constant
test.c:6:8: warning: initialization makes integer from pointer without a cast
第一个警告百度了下:不同机器对被单引号引起的多个字符的处理方式会有所不同。故而,编译器会报 出以上警告信息。但是我也不知道这里到底是怎么处理的,ASCII码中34对应的是 " (双引号)。
第二个警告是说用指针初始化一个整形数,但是没强制转换。PS:指针是变量的地址,变量的地址还是数,所以能输出?
运行结果是:a is 813183538, b is 134513860 。

热心网友 时间:2024-12-31 13:55

int a='0x22';表示 a 的值是十六进制数。转成二进制为34。

int a="0x22" 中,“0x22”表示一个常字符串。编译是不能通过的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com