當我們定義一個變數a,並給a賦予0~255的值,很顯然沒有問題,如程式碼:
#include<stdio.h>
void main( )
{
int a = 0; //將0值賦給變數a
int b = 255; //將255值賦給變數b
putchar(a) ; //輸出變數a的值
putchar(b) ; //輸出變數b的值
putchar("\n") ;
}
結果顯然沒有問題。
但如果現在賦值為負數呢?如程式碼:
int a = -4646; //將-4646值賦給變數a
int b = -2; //將-2值賦給變數b
發現編譯正常,也能輸出結果,只是輸出的結果都是空,我也不太清楚是什麼原因?
還有一種情況是,賦的值大於255時,會怎樣?程式碼如下:
int a = 592; //將592值賦給變數a
int b = 267; //將267值賦給變數b
執行結果為:從結果中可以發現,賦的值被截斷成char型資料了,也就是說只取了低八位的資料。
從這些示例來說,putchar()這個函式不會檢查要輸出的字元的真正範圍。結論:在使用的時候需要注意,輸出變數的範圍是不是一個字元的範圍內,只有在一個字元的範圍內才能正確輸出,不然肯定會出錯。
當我們定義一個變數a,並給a賦予0~255的值,很顯然沒有問題,如程式碼:
#include<stdio.h>
void main( )
{
int a = 0; //將0值賦給變數a
int b = 255; //將255值賦給變數b
putchar(a) ; //輸出變數a的值
putchar(b) ; //輸出變數b的值
putchar("\n") ;
}
結果顯然沒有問題。
但如果現在賦值為負數呢?如程式碼:
#include<stdio.h>
void main( )
{
int a = -4646; //將-4646值賦給變數a
int b = -2; //將-2值賦給變數b
putchar(a) ; //輸出變數a的值
putchar("\n") ;
putchar(b) ; //輸出變數b的值
putchar("\n") ;
}
發現編譯正常,也能輸出結果,只是輸出的結果都是空,我也不太清楚是什麼原因?
還有一種情況是,賦的值大於255時,會怎樣?程式碼如下:
#include<stdio.h>
void main( )
{
int a = 592; //將592值賦給變數a
int b = 267; //將267值賦給變數b
putchar(a) ; //輸出變數a的值
putchar("\n") ;
putchar(b) ; //輸出變數b的值
putchar("\n") ;
}
執行結果為:從結果中可以發現,賦的值被截斷成char型資料了,也就是說只取了低八位的資料。
從這些示例來說,putchar()這個函式不會檢查要輸出的字元的真正範圍。結論:在使用的時候需要注意,輸出變數的範圍是不是一個字元的範圍內,只有在一個字元的範圍內才能正確輸出,不然肯定會出錯。