相关疑难解决方法(0)

为什么std :: cout将volatile指针转换为bool?

如果你试图cout指向volatile类型的指针,即使是你通常希望cout打印字符串的volatile指针,你只需要得到'1'(假设指针不是null我认为).我假设输出流operator <<是专门用于volatile指针的模板,但我的问题是,为什么?什么用例激发了这种行为?

示例代码:

#include <iostream>
#include <cstring>

int main()
{
    char x[500];
    std::strcpy(x, "Hello world");

    int y;
    int *z = &y;

    std::cout << x << std::endl;
    std::cout << (char volatile*)x << std::endl;

    std::cout << z << std::endl;
    std::cout << (int volatile*)z << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Hello world
1
0x8046b6c
1
Run Code Online (Sandbox Code Playgroud)

c++ pointers iostream standards-compliance volatile

16
推荐指数
2
解决办法
2135
查看次数

标签 统计

c++ ×1

iostream ×1

pointers ×1

standards-compliance ×1

volatile ×1