簡體   English   中英

減少賦值右側的 size_t

[英]Decrementing size_t on the right hand of assignment

為什么在這種情況下idx1 -1 ?

long long idx = (size_t)0 - 1;

cout << (size_t)0 - 1; 這將打印ULLONG_MAX

cout << idx; 這打印 -1

如果idx改為 integer 會發生什么變化?

在這份聲明中

cout << (size_t)0 - 1;

由於通常的算術轉換,表達式(size_t)0 - 1的類型是無符號 integer 類型size_t 因為它不能是負數,所以它的值ULLONG_MAX (似乎在使用的系統中,類型 size_t 被定義為類型unsigned long long int的別名)。

在這份聲明中

long long idx = (size_t)0 - 1;

初始值設定項轉換為有符號類型 long long int,即聲明的 object 的類型。 UNIT_MAX 值不能放入有符號的 long long 中,因此它給出 -1。

由於所用系統中size_t類型的寬度與 long long int 類型的寬度相同。 所以 size_t 類型的初始化器的內部表示被解釋為 long long 類型的值,即無符號初始化器的最高有效位被認為是符號 bit.int。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM