在“有符号的 int”和“无符号的 int”之间进行添加
Addition between `signed int` and `unsigned int`
这是"C++ Primer"中的一个例子,它表明signed int
在添加unsigned int
时将自动转换为unsigned int
。但我得到的结果似乎是,unsigned int
被投到了signed int
。谁能告诉我为什么?
法典:
#include <iostream>
using namespace std;
int main() {
int i = -1;
unsigned int u = 10;
cout << i + u << endl;
return 0;
}
结果:
9
这是一个
非常无趣的例子。你怎么知道9
是signed
还是unsigned int
(或long
或short
或......)?它在所有这些类型的范围内。
下面是一个更好的示例:
int i = -12;
unsigned int u = 10;
cout << i + u << endl; // prints 4294967294
或者真的:
static_assert(is_same<decltype(i+u), unsigned int>::value,
"wat");
相关文章:
- int x 和 int x=0 之间的差异在C++
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 使用模板在size_t和int之间进行隐式类型转换
- 在 ENG US 和 ENG INT 之间切换时,GetKeyboardLayout() 不会改变
- 使用 double 在 C++ 中初始化 int 之间的差异
- C :使用函数过载与CHAR到INT之间的隐式转换,反之亦然
- 为什么字符串和 int 之间的 + 运算符充当 substr
- int f(int *i) 和 int f(int &i) 之间的区别
- "new int[5]"和"malloc(5 * sizeof(int))"之间的C++有什么区别?
- 在“有符号的 int”和“无符号的 int”之间进行添加
- 一个关于C++中double和int之间转换的奇怪结果
- 向量 <int> V[] 和向量<向量<int> > V 之间的区别
- map< "string" ,..> 和 map<int,..> 之间的性能差异?
- int p = *(int *)i 和 int p = *(int *)&i 之间的区别
- int x{} 之间有区别吗?和整数 x = 0;
- int[n][n] 和 int** 之间的关系
- C++字符和 int 之间的转换,结果错误
- void(int) 和 void (*)(int) 之间的区别
- int someInts[3]和int*someInts=new int[3]之间的差异