第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

if語句中的sizeof()運算符

if語句中的sizeof()運算符

C
慕森卡 2019-09-03 15:52:15
#include <stdio.h>int main(void){    if (sizeof(int) > -1)        printf("True");    else        printf("False");}它打印False。為什么sizeof()不返回值if?
查看完整描述

3 回答

?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

  1. sizeof它不是一個功能,它是一個操作員。括號不是運算符名稱的一部分。

  2. 它失敗了,因為生成的值具有無符號類型size_t,這導(dǎo)致“通常的算術(shù)轉(zhuǎn)換” -1轉(zhuǎn)換為無符號,在這種情況下,它是一個非常大的數(shù)字。

基本上你正在比較4 > 0xffffffffu,或者至少接近它。有關(guān)詳情,請參閱此問題。


查看完整回答
反對 回復(fù) 2019-09-03
?
慕勒3428872

TA貢獻1848條經(jīng)驗 獲得超6個贊

  • if語句中>運算符的操作數(shù)是sizeof(int)-1

  • sizeof(int)是類型size_t,保證是無符號整數(shù)。在實踐中,size_t很可能至少與unsigned int那里的任何系統(tǒng)一樣大。

  • -1是類型int,相當(dāng)于signed int。

  • 不會發(fā)生整數(shù)提升,因為兩個操作數(shù)都是足夠大的整數(shù)類型。

  • 然后根據(jù)正式稱為通常算術(shù)轉(zhuǎn)換的C規(guī)則平衡兩個操作數(shù)。

這些狀態(tài)(C11 6.3.1.8):

...

否則,如果帶有符號整數(shù)類型的操作數(shù)的類型可以表示具有無符號整數(shù)類型的操作數(shù)類型的所有值,則具有無符號整數(shù)類型的操作數(shù)將轉(zhuǎn)換為帶有符號整數(shù)類型的操作數(shù)的類型。

否則,兩個操作數(shù)都轉(zhuǎn)換為無符號整數(shù)類型,對應(yīng)于帶有符號整數(shù)類型的操作數(shù)的類型。

  • 上面的后者將會發(fā)生,因為(簽名)int不能適合a的所有值size_t

  • 因此-1轉(zhuǎn)換為無符號整數(shù)。實際上,size_t很可能等同于unsigned int或unsigned long。在這樣的變量中存儲-1時發(fā)生的是實現(xiàn)定義的行為。

  • 在二進制補碼計算機上(世界上所有計算機的99.9%),-1將被解釋為0xFFFFFFFF(FF的數(shù)量取決于給定系統(tǒng)上int的大?。?/p>

  • 4 > 0xFFFFFFFF 評估為假。


查看完整回答
反對 回復(fù) 2019-09-03
  • 3 回答
  • 0 關(guān)注
  • 613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號