gpt4 book ai didi

c - 从 int 到 char 的赋值如何在 C 中工作?

转载 作者:行者123 更新时间:2023-12-04 12:10:55 26 4
gpt4 key购买 nike

在 C 中将 int 分配给 char 会发生什么?它总是忽略左边的多余位吗?

示例(4 字节 int):

unsigned char c = 0;
unsigned int i = 500;

c = i; // c is 244

c = i << 24 >> 24; //c is 244

i = i << 24 >> 24; //i is 244

在二进制中,50011111010024411110100

最佳答案

通常情况下,这正是发生的情况。 ISO/IEC 9899:2011 标准的第 6.3.1.3 节规定了在这种情况下必须发生的事情:

6.3.1.3 有符号和无符号整数

  1. 当一个整数类型的值转换为另一个整数时_Bool 以外的类型,如果该值可以用新的表示类型,它是不变的。
  2. 否则,如果新类型是无符号的,则值转换为反复加或减一大于最大值可以用新类型表示,直到值在新类型的范围。60)
  3. 否则,新类型有符号,值不能代表其中;结果是实现定义的或引发了实现定义的信号。

60) 规则描述的是数学值的算术运算,而不是给定类型表达式的值。

您的情况属于上述第 2 项(因为您的角色被声明为未签名)。在典型的计算机算术中,结果将与您描述的完全一样。

关于c - 从 int 到 char 的赋值如何在 C 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294350/

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