gpt4 book ai didi

C++ : extern variable inside namespace and printf vs cout

转载 作者:行者123 更新时间:2023-11-27 23:15:50 24 4
gpt4 key购买 nike

我有一个关于 printf 的小问题,我不知道为什么!

=>内核.h

#ifndef KERNEL_H
#define KERNEL_H

namespace kernel
{
extern const double h;
}

#endif // KERNEL_H

=>内核.cpp

#include <kernel.h>

namespace kernel
{
const double kernel::h=85.0;
}

=>main.cpp

#include "kernel.h"
#include <iostream>
//#include <cstdio>//With cstdio, it is the same problem !

int main(int argc, char *argv[])
{

using namespace kernel;

double a = h;

printf("printf a is %d\n",a);
std::cout<<"std::cout a is " << a << std::endl;

printf("printf h is %d\n",h);
printf("printf kernel::h is %d\n",kernel::h);
std::cout << "std::cout h is " << h << std::endl;

return 0;
}

我在控制台上的输出是:

printf a is 0
std::cout a is 85
printf h is 0
printf kernel::h is 0
std::cout h is 85

为什么 printf 不起作用?因为它是 C 函数?

谢谢

最佳答案

那是因为您将其打印为 integer。尝试 %lg%lf

printf("printf kernel::h is %lg\n",kernel::h);

如果您打开警告,编译器会告诉您这个问题。 -W格式

或者只使用std::cout,你不会有这种问题

std::cout << kernel::h;

关于C++ : extern variable inside namespace and printf vs cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16467173/

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