C语言转移字符常量的十六进制能以"0x"开头吗?

来源:百度知道 编辑:UC知道 时间:2024/05/23 19:01:56
高等教育出版社出版的<<全国计算机等级考试二级教程-C语言程序设计>>中P69说道"反斜线字符的十六进制数只可由小写字母x开头,不允许用大写字母"X",也不能用0x开头.
但做题目和听C语言视频教程时说可以用"0x"开头,到底行不行呢?最好同时给出答案的出处.谢谢!

1、16进制常数的表示,以0x或0X开头

2、转义字符中的16进制数,以x开头,不能以X开头

3、单字符数据中,反斜杠后面跟0,若其后有0-7的数字跟随,则表示其后的数是8进制数,若有其它数或字符跟随,则属于错误(但编译不一定报错,会自动取最后一个字符)

4、反斜杠后可以直接跟0-7间的数字,视为8进制数,最多三个,可以少于3个。

测试代码如下,供学习研究:

#include <stdio.h>

int main()
{
int x=0x01;
int y=0Xff;
char ch1='\x41';
char ch2='\X42'; //错误,ch2实际赋值为'2'  VC编译有警告 warning C4129: 'X' : unrecognized character escape sequence
char a='\07';
char b='\0a'; //错误,b实际赋值为'a' VC编译无警告
char c='\0' ;
char d='\123';

printf("x=%#X y=%#X\n", x,y );
printf("ch1=%#x\n", ch1 );
printf("ch2=%#x\n", ch2 );
printf("a=%#x b=%#x c=%#x d=%#x\n", a,b,c,d