gpt4 book ai didi

c++ - C 和 C++ 类型转换的区别?

转载 作者:行者123 更新时间:2023-11-30 21:18:00 24 4
gpt4 key购买 nike

this tutorial 中的最后一个示例关于隐式类型转换指出 std::cout << 5u - 10;将产生4294967291而不是-5由于类型转换。我在 C 和 C++ 中都尝试过这个。 C++ 中的结果如所 promise 的那样,但是当使用 C ( printf("%d\n", 5u - 10); ) 时,结果是 -5 。发生了什么?

最佳答案

在 C 示例中,没有任何类型转换。 C 只是计算表达式5u - 10 并将结果压入堆栈。然后 printf 看到一个类型字符并在打印时解释堆栈上的值。类型字符是d (%d),意思是“十进制整数”,因此堆栈上的位置以 int 形式检索,并以(有符号)十进制形式打印。

如果类型字符是 ld (%ld),则即使只压入一个 int,堆栈上的位置也会以 long 形式检索,这将被打印为(带符号的)十进制数。同样,没有任何类型转换(只会打印一个无意义的数字)。

关于c++ - C 和 C++ 类型转换的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335959/

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