gpt4 book ai didi

c++ - 为什么这段代码打印的是 6 而不是 5?

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:47 25 4
gpt4 key购买 nike

我不知道这个问题对您来说可能有多奇怪:为什么这段代码打印的是 6 而不是 5?据我所知,应该在这里使用通常的算术,因为一旦我没有重载 + 运算符和 2+3 = 3+2 = 5 (据我所知)

#include <stdio.h>
#include <stdlib.h>

enum A
{
A_A,
A_B
};

struct Foo
{
Foo(int, int, enum A);
int x;
int y;
enum A flags;
};

struct Baa : Foo
{
Baa(int, int);
void show();
};


Foo::Foo(int a, int b, enum A aflags)
{
x = a;
y = b;
flags = aflags;
}

Baa::Baa(int c, int d)
: Foo(c, d, A_B)
{
}

void Baa::show()
{
if(flags == A_A)
printf("a = [%d]\n", x + y);
else if(flags == A_B)
printf("b = [%d]\n", y + y);
else
puts("unknow flag");
}

int main()
{
Baa *b = new Baa(2, 3);
b->show();
}

输出:

b = [6]

我在访问派生类的成员值时遇到了另一个问题——如果您想知道的话,我得到的是 0 而不是实际值,因此要获得实际值,我需要将其转换为派生类的类型,例如 int x = ((BaseCLass*)this)->n 并且它有效。因此,我开始编写我的代码的简短版本以在操作系统上发布并寻求帮助,但现在我发现了这个问题。我错过了什么?

最佳答案

printf("b = [%d]\n", y + y);

你不是想成为 x+y 而不是 y+y 吗?所以,3+3 是 6,这是正确的。

关于c++ - 为什么这段代码打印的是 6 而不是 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22258223/

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