国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Eine klassische Interviewfrage in C-Sprache unter Linux
過去多啦不再A夢(mèng)
過去多啦不再A夢(mèng) 2017-06-26 10:59:02
0
2
1316

Was ist die Ausgabe, wenn Sie den GCC-Compiler verwenden, um das folgende Programm unter Linux auszuführen?

#include<stdio.h>
int main(){
    char c=127;
    printf("%d",++c);
    printf("%d",++c);
    return 0;
}

Wissen Sie nur, dass es sich um Typkonvertierung, Datenkürzung und -füllung handelt. Aber Sie kennen die konkrete Erkl?rung nicht?

Ursprüngliche Fragequelle: Mehrere klassische Interviewfragen in C-Sprache unter Linux

過去多啦不再A夢(mèng)
過去多啦不再A夢(mèng)

Antworte allen(2)
巴扎黑

char 的長(zhǎng)度是 1 字節(jié),并且,大多數(shù)的機(jī)器都將其視為有符號(hào)數(shù)的,所以它的表示范圍是 [-128, 127](參見《深入理解計(jì)算機(jī)系統(tǒng)》P27~P28)。所以,當(dāng)你給 c 賦值 127 時(shí),你執(zhí)行了 ++c,那么就會(huì)導(dǎo)致溢出,因?yàn)樗挥幸粋€(gè)字節(jié)。

在機(jī)器中表示 127,變成二進(jìn)制是這樣的 01111111,可以看到,當(dāng)你加 1 之后,結(jié)果就變成了 10000000,由于在計(jì)算機(jī)內(nèi)部,負(fù)數(shù)是用補(bǔ)碼來(lái)表示的,所以就變成了 -128。之后再 ++c,就是 -127 了。

至于不同的類型,其實(shí)在計(jì)算機(jī)內(nèi)部表現(xiàn)的都是一樣的,都是一塊內(nèi)存。所以類型不是限制。

Peter_Zhu

這題考的是 編譯器,而不是語(yǔ)言。
定義3個(gè)變量:

char c; // 表示一個(gè) ascii字符
signed char s_c;   //有符號(hào) 1字節(jié) 整數(shù)
unsigned char u_c; //無(wú)符號(hào) 1字節(jié) 整數(shù)

C語(yǔ)言里,c 在參與計(jì)算時(shí), c 轉(zhuǎn)為 s_c 還是 u_c ,是由編譯器來(lái)決定的。

gcc 認(rèn)為 c 是 有符號(hào)的,后續(xù)的計(jì)算 和 輸出 都是按有符號(hào)數(shù)進(jìn)行處理。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage