比如说main()
{int a='\Xf';
printf("%d\n",a);
}
输出26200。
而main()
{int a='\xf';
printf("%d\n",a);
}
输出的是15
c语言转义字符'\x'和'\X'区别为:ASCII码值不同、表示不同。
一、ASCII码值不同
1、转义字符'\x':转义字符'\x'的ASCII码值为120。
2、转义字符'\X':转义字符'\X'的ASCII码值为88。
二、不同
1、转义字符'\x':转义字符'\x'表示后面的字符是十六进制数。
2、转义字符'\X':转义字符'\X'表示的是大写字母X。
扩展资料:
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
转义字符不属于控制字符;控制字符也不属于转义字符。如果控制字符的定义是非图形的字符,或者对输出设备(打印机、文本终端)有特殊意义的字符,那么针对这些设备的转义字符也是控制字符。但是程序设计用的转义字符是图形字符,因此它们不是控制字符。
C中的十六进制ASCII码换码序列的引导符是'\x'而不是'\X',所以谈不上它们有什么区别。下面的代码可以验证:
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"
int main(void){
printf("%c %c\n",'\x04E','\X04E');
return 0;
}
输出是N E。这表明系统只认\x而不认\X,所以前者输出了对应字符N,后者被截断为E。
为什么会输出26200转化成十六进制是66 58 而字符'f'和'X'的ASCII码值用十六进制表示就是66和58
至于为什么是6658而不是5866,因为lz的编译器是针对大端模式的追问
谢谢大神,在小小的问下:
main()
{int a=3,b=2,c=1,d;
d=cb>c;
printf("%d\n",d);
}
输出的0
这是为什么啊????
cb>c
(3>2)>1
即1>1,显然为假,值为0