相关疑难解决方法(0)

无符号和有符号整数的比较运算

请参阅此代码段

int main()
{ 
 unsigned int a = 1000;
 int b = -1;
 if (a>b) printf("A is BIG! %d\n", a-b);
 else printf("a is SMALL! %d\n", a-b); 
 return 0;
}   
Run Code Online (Sandbox Code Playgroud)

这给出了输出:a是SMALL:1001

我不明白这里发生了什么.>运算符如何在这里工作?为什么"a"小于"b"?如果它确实更小,为什么我得到一个正数(1001)作为差异?

c unsigned signed gcc

40
推荐指数
2
解决办法
4万
查看次数

为什么?1> sizeof(int)?

请考虑以下代码:

template<bool> class StaticAssert;
template<> class StaticAssert<true> {};
StaticAssert< (-1 < sizeof(int)) > xyz1; // Compile error
StaticAssert< (-1 > sizeof(int)) > xyz2; // OK
Run Code Online (Sandbox Code Playgroud)

为什么是-1 > sizeof(int)真的?

  1. -1提升到unsigned(-1)那时是真的吗unsigned(-1) > sizeof(int)
  2. 这是真的,-1 > sizeof(int)相当于-1 > size_t(4)如果的sizeof(int)的是4,如果是这样的话,为什么-1 > size_t(4)是假的?

这个C++标准是否合适?

c++ unsigned sizeof type-conversion modular

17
推荐指数
2
解决办法
1990
查看次数

为什么sizeof(int)不大于-1?

这是我的C代码:为什么输出"False"?????

为什么4> -1 ???

代码:

#include <stdio.h>

int main() {
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

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

标签 统计

c ×2

c++ ×2

sizeof ×2

unsigned ×2

gcc ×1

modular ×1

signed ×1

type-conversion ×1