相关疑难解决方法(0)

陷阱表示

  1. 什么是C中的陷阱表示(某些示例可能有帮助)?这适用于C++吗?

    float f=3.5;
    int *pi = (int*)&f;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑:我知道'pi'违反了别名规则,根据C标准它是UB.至少在海湾合作委员会它没有产生任何错误,但警告.在这个实现(即GCC)中,假设sizeof(int) == sizeof(float)do f*pi具有相同的二进制表示/模式?MSVC怎么样?

c c++ gcc visual-studio-2010

63
推荐指数
3
解决办法
1万
查看次数

Visual Studio中的long long值

我们知道-2*4 ^ 31 + 1 = -9.223.372.036.854.775.807,你可以在long long中存储的最低值,如下所述:整数类型在C++中存储的值的范围.所以我有这个操作:

#include <iostream>

unsigned long long pow(unsigned a, unsigned b) { 
    unsigned long long p = 1; 
    for (unsigned i = 0; i < b; i++) 
        p *= a; 
    return p; 
}

int main()
{
    long long nr =  -pow(4, 31) + 5 -pow(4,31);
    std::cout << nr << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

为什么它显示-9.223.372.036.854.775.808而不是-9.223.372.036.854.775.803?我正在使用Visual Studio 2015.

c++ long-long

10
推荐指数
1
解决办法
2056
查看次数

C++文字整数类型

文字表达式也有类型吗?

long long int a = 2147483647+1 ;
long long int b = 2147483648+1 ; 
std::cout << a << ',' << b ; // -2147483648,2147483649
Run Code Online (Sandbox Code Playgroud)

c++ int integer-overflow long-integer

2
推荐指数
1
解决办法
429
查看次数