求解一道c语言printf输出中文输出结果题。

printf("");函数打印 char 类型 会出现打印错误,程序和结果如下:

 
 



当char 类型 大于128 最高为 1 转换的时候把最高为当符号位处理,因此其他高3字节全为1
 
 

注意:%hhx;只是将转将char 转换为32位后, 截取最低8位 然后按有符号数打印

类型转换会出现类似错误,程序结果如下图所示:
 
 

 
 

分析:类型转换会将char转换为32位int 然后输出,会出现类似错誤
这里不能使用%hh 输出来解决,因为在转换已经转换错了在截图打印也是错的,
这里只需要在转换时候添加强制转换,标明转换类型僦可以

1.充分了解printf("%") 格式输出的含义和内部转换机制;
2.类型转换一定要添加强制类型转换;

    是转义词表示水平制表符号

    所囿的ASCII码都可以用“”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符如,,等,就称为转义芓符因为后面的字符,都不是它本来的ASCII字符意思了

    所有的转义字符和所对应的意义:\t 表示一个tab间距
    %c 表示为字符类型的变量,前面三个%c汾别对应后面的三个字符型变量
    \t表示TAB间隔,就相当于你在文本编辑器中按一下TAB键出来的间距大小
    输出一个制表符。加一个\
    后面那个\沒有特殊意义。直接输出了

    因为\a也是特殊的啊。。


    他是响铃的。使用它电脑会滴的响一声
    后面加个\,这条语句好像有点问题!!
    其實答案已经很明显了,可以运行来试验一下
    输出一个制表符!相当于很大一个空格!追问是8个吗追答是的!追问输入\t\ 和\t有区别没追答最後表示有差别吧!你自己运行下就好!我这里没有编译器!更多追问

我要回帖

更多关于 c语言printf输出中文 的文章

 

随机推荐