相关疑难解决方法(0)

为什么我们将INT_MIN定义为-INT_MAX - 1?

AFAIK这是一个标准的"习语"

#  define INT_MIN   (-INT_MAX - 1)  
#  define INT_MAX   2147483647    
Run Code Online (Sandbox Code Playgroud)

问题:为什么INT_MIN的定义不是-2147483648?

c signed types integer

4
推荐指数
1
解决办法
2122
查看次数

C++整型常量的类型

根据MSDN(整数类型 - VC2008):

没有后缀的十进制常量的类型是int,long int或unsigned long int.可以表示常量值的这三种类型中的第一种是分配给常量的类型.

Visual C++ 2008上运行以下代码:

void verify_type(int a){printf("int [%i/%#x]\n", a, a);}
void verify_type(unsigned int a){printf("uint [%u/%#x]\n", a, a);}
void verify_type(long a){printf("long [%li/%#lx]\n", a, a);}
void verify_type(unsigned long a){printf("ulong [%lu/%#lx]\n", a, a);}
void verify_type(long long a){printf("long long [%lli/%#llx]\n", a, a);}
void verify_type(unsigned long long a){printf("unsigned long long [%llu/%#llx]\n", a, a);}

int _tmain(int argc, _TCHAR* argv[])
{
    printf("sizeof(int) %i\n", sizeof(int));
    printf("sizeof(long) %i\n", sizeof(long));
    printf("sizeof(long long) %i\n\n", sizeof(long long));

    verify_type(-2147483647);
    verify_type(-2147483648);

    getchar();
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ types long-integer

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

关于C语言中有符号和无符号整数的说明

我试过用C语言编写程序,程序结果如下:

输出:当iis 为0 unsigned int时,最后打印0 ,当值为i0时,控件不应该进入while循环,因为我已经给出了i>0条件,但是打印了0,我不明白它是怎么可能的.

i进行签名int,然后0不打印.

请让我知道该计划中发生了什么.

#include <stdio.h>
#include <string.h>

main()
{
   unsigned int i=1;
   int c=1;
   while(i>0)
   {
     i=i*2;         
     c++;
     printf("%d\n",i);          
   }

   printf("%d c value is",c) ;
}
Run Code Online (Sandbox Code Playgroud)

c

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

将 `-1` 转换为 unsigned int 是一种很好的代码风格吗?

强制转换-1为 unsigned int是一种很好的代码风格吗?例如:

#define MAX_UINT8 ((uint8_t) -1)
Run Code Online (Sandbox Code Playgroud)

比较

#define MAX_UINT8 0xff
Run Code Online (Sandbox Code Playgroud)

c

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

标签 统计

c ×3

types ×2

c++ ×1

integer ×1

long-integer ×1

signed ×1