tft每日頭條

 > 科技

 > c語言輸入一行數字對應ascii碼

c語言輸入一行數字對應ascii碼

科技 更新时间:2024-11-25 07:02:33

有如下一段C語言程序:

#include "stdio.h"

int main(void)

{

char a = 0xC8;

printf ("字符a的ASCII碼值的10進制是%d\n", a);

return 0;

}

程序定義了一個字符‘a’,并且賦予了初始值“0xC8”,這是一個16進制的數。最後,通過printf函數輸出字符a的值。

程序不難,光看程序,也應該知道最終的結果。16進制“0xC8”的10進制數是200,所以程序應該輸出字符a的ASCII碼值是200吧。實際運行結果如下:

c語言輸入一行數字對應ascii碼(C語言字符型數據的ASCII碼值為何是負數)1

結果是-56,還是個負數,C語言初學者估計一頭霧水了。

其實字符a在定義時如果就寫一個“char”,則就默認類型是“signed char”,也就是說字符a的10進制ASCII碼值是有符号的,取值範圍是【-128,127】,那麼200這個數肯定就超過這個範圍,超過的部分是200 – 127 = 73。那麼超過的部分又從-128開始計數了,也就是-128 73 - 1 = -56了。

如果在定義字符a時,類型寫成“unsigned char”,那麼舊标明字符a的10進制ASCII碼值是無符号的,取值範圍就是【0,255】了。朋友們可以修改下程序看看結果是什麼。

下一篇來談談為何“char”類型的取值範圍是【-128,127】,而“unsigned char”取值範圍是【0,255】。

歡迎留言讨論技術。

本文為作者原創,歡迎轉發!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved