相关疑难解决方法(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
查看次数

为什么这个C代码的输出是"否"?

我遇到了这个问题.

#include <stdio.h>

int main(void) {
    // your code goes here
    unsigned int i = 23;
    signed char c = -23;

    if (i > c)
        printf("yes");
    else
        printf("no");

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

我无法理解为什么这段代码的输出是no.

当C intcharC 之间进行比较时,有人可以帮助我理解比较运算符的工作原理吗?

c comparison-operators unsigned-integer

6
推荐指数
1
解决办法
171
查看次数

打印数组中的元素

可能重复:
对C宏扩展和整数运算感到困惑
一个谜语(在C中)

以下C程序的输出是打印数组中的元素.但是当实际运行时,它不会这样做.

  #include<stdio.h>

  #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;

      for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
          printf("%d\n",array[d+1]);

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

这是为什么?

c c++ arrays printf

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

C:将签名转换为无符号

其实我(可能)是一个"简单"的问题.所以我不知道如何将有符号整数转换为无符号整数.

我的代码:

signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Run Code Online (Sandbox Code Playgroud)

如果我将无符号值发送到控制台(参见我的上一个代码行),我总是得到一个有符号整数.

你能帮助我吗?

非常感谢!

亲切的问候,亲

c signed unsigned-integer

0
推荐指数
1
解决办法
3191
查看次数

无法输入while语句

可能重复:
无符号和有符号比较
unsigned int和signed char比较

当我尝试输入这个while语句时,我有一个奇怪的行为:

unsigned u = 0;
int i = -2;

while(i < u)
{
    // Do something
    i++;
}
Run Code Online (Sandbox Code Playgroud)

但它从来没有进入,即使当我设置一个断点i = -2u = 0.我究竟做错了什么?我怎么能解决这个问题?

c loops

0
推荐指数
1
解决办法
121
查看次数