C++ 除了内存中的长度之外,数据类型之间的区别是什么?

C++ 除了内存中的长度之外,数据类型之间的区别是什么?,c++,disassembly,machine-code,C++,Disassembly,Machine Code,我一直在想C/C++代码是如何在机器代码中表示的,但我很难理解除了内存长度的指定之外,还有哪些数据类型 该类型的所有变量都可以表示的一组值 该类型内存中的布局(例如,表示变量的每个位或字节的含义(如有) 可以作用于变量的一组操作 这些行动的行为 类型不一定直接在机器代码中表示。编译器发出一组指令和数据(以不同目标平台的方式)来操作内存和机器寄存器。在C源代码中,每个变量的类型向编译器提供有关为其分配内存的信息,编译器决定表达式(在C语句中)之间的映射以及寄存器和机器指令的使用,以提供所需的效

我一直在想C/C++代码是如何在机器代码中表示的,但我很难理解除了内存长度的指定之外,还有哪些数据类型

  • 该类型的所有变量都可以表示的一组值
  • 该类型内存中的布局(例如,表示变量的每个位或字节的含义(如有)
  • 可以作用于变量的一组操作
  • 这些行动的行为

类型不一定直接在机器代码中表示。编译器发出一组指令和数据(以不同目标平台的方式)来操作内存和机器寄存器。在C源代码中,每个变量的类型向编译器提供有关为其分配内存的信息,编译器决定表达式(在C语句中)之间的映射以及寄存器和机器指令的使用,以提供所需的效果。

类型也与

  • 该类型的所有变量都可以表示的一组值
  • 该类型内存中的布局(例如,表示变量的每个位或字节的含义(如有)
  • 可以作用于变量的一组操作
  • 这些行动的行为

类型不一定直接在机器代码中表示。编译器发出一组指令和数据(以不同目标平台的方式)来操作内存和机器寄存器。在C源代码中,每个变量的类型向编译器提供了有关为其分配内存的信息,编译器决定表达式(在C语句中)之间的映射以及寄存器和机器指令的使用,以提供所需的效果。

它们还定义了内存中的值可以执行哪些操作,以及它们的执行方式。C/C++不存在。它们还定义了对内存中的值可用的操作,以及它们是如何执行的。C/C++不存在。您是否可以添加具有相同长度的类型的示例,这些类型在代码中互换使用时具有不同的行为,并解释导致不同行为的原因?
unsigned
int
大小相同,但表示一组不同的值(
无符号
不能表示负值,而
int
不能表示负值)。溢出
无符号
时使用模运算(例如,
-1
的结果被包装成
无符号
在目标机器上可以表示的最大值),而溢出
int
时给出未定义的行为(溢出
int
的结果在不同的编译器之间确实有所不同,甚至在大小相同的两个编译器之间也是如此)。这正是标准指定它们的方式。您是否可以添加具有相同长度的类型的示例,这些类型在代码中互换使用时具有不同的行为,并解释导致不同行为的原因?
unsigned
int
是(在任何指定的目标计算机上)相同的大小,但表示不同的值集(无符号不能表示负值,
int
可以表示负值)。溢出无符号使用模运算(例如,
-1
的结果被包装成无符号在目标机器上可以表示的最大值)溢出
int
时会产生未定义的行为(溢出
int
的结果在编译器之间会有所不同,甚至在大小相同的两个编译器之间也是如此)。这正是标准指定它们的方式。