gpt4 book ai didi

c++ - 当 size_t 类型的变量 t 被赋予负值时,它的实际值是多少?(可以是 unsigned int 而不是 size_t)

转载 作者:行者123 更新时间:2023-11-28 01:20:34 24 4
gpt4 key购买 nike

-1 分配给 size_t 类型的变量 t 并检查它与 -1 和 < strong>4294967295(FFFFFFFF,2 对-1 的补充;我的系统是64 位;值可能因系统而异),那么在这两种情况下,它都返回 1true

代码是

int main(){
unsigned int t = 10;
cout<<"t = -1: "<<(t==-1); //checks if t is -1
cout<<"\nt = 4294967295: "<<(t==4294967295); //checks if t is 4294967295
cout<<"\nt: "<<t; //printing actual value of t
int p = t; //typecasting it to int
cout<<"\np: "<<p; //printing value of p
}

实际输出为

t = -1: 1
t = 4294967295: 1
t: 4294967295
p: -1

(t==-1)(t==4294697295) 返回 1 但输出 t = 4294697295 并输出 p = -1。是否变量 t 持有两个值,即 -14294697295。事实并非如此。

需要帮助。系统内部到底发生了什么??

最佳答案

比较有符号值和无符号值时,有符号值在比较前先转换为无符号值。这是在编译期间完成的。所以 t==-1 变成 t==4294967295ut==4294967295 (有符号整数文字)变成 t==4294967295u

引用:http://eel.is/c++draft/expr.arith.conv

(1.5.3) Otherwise, if the operand that has unsigned integer type has rank greater than or equal to the rank of the type of the other operand, the operand with signed integer type shall be converted to the type of the operand with unsigned integer type.

关于c++ - 当 size_t 类型的变量 t 被赋予负值时,它的实际值是多少?(可以是 unsigned int 而不是 size_t),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com