我读了一个非常关于POD,琐碎的,标准布局类.但对于标准布局课程的规则,我有一个问题:
或者在大多数派生类中没有非静态数据成员,最多有一个具有非静态数据成员的基类,或者没有具有非静态数据成员的基类。
我写了一个源代码:
#include <iostream>
struct A {
int a;
};
struct B {
int b;
};
struct C : A, B {
int c;
};
int main() {
C c = {}; // initialize C
c.a = 0xffffffff;
c.b =
当我们看一下一些基本的数据类型,比如char和int,我们知道char只是一个无符号字节(取决于语言),int只是一个有符号的dword,bool只是一个只能是1或0的char,等等。我的问题是,为什么我们在编译语言中使用这些类型,而不是仅仅声明一个byte、dword等类型的变量,因为一旦你区分了有符号数据和无符号数据以及浮点数据,上面提到的类型的操作几乎是一样的?
为了扩展问题的上下文,在C语言中,if和while语句可以接受布尔值作为输入,该布尔值通常存储为char,这排除了显式布尔类型的需要。
在实践中,这两段代码在二进制级别上应该是等价的:
int main()
{
int
因此,我正在学习Ada中的应用程序定义类型,它似乎类似于C编程语言中的typedef。但是,如果我使用ty胡枝子f为C中的预定义类型创建了一个新名称,我仍然可以这样做:
typedef int my_int;
int a = 5;
my_int b = a; -- No problem
但如果我在Ada身上试试这个:
type my_int is new Integer;
a : Integer := 5;
b : my_int := a; -- Causes some error
所以我的问题是,我的理解是正确的,在C中,my_int只是int类型的别名或新名称,而不是新类型,而在Ada中