69,381
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
void main()
{
unsigned short a = -15;
short b = -13;
if(a >= 0)
printf("0");
if(~a >= 0)
printf("1");
if(b >= 0)
printf("2");
if(~b >= 0)
printf("3");
}
结果为03,真是奇怪,有符号数不是取反符号位不变吗?怎么回事?a >= 0 这样能判断出来,为什么~a >= 0 却变成负数了?
#include <stdio.h>
#include <string.h>
void main()
{
unsigned short a = -15;
short b = -13;
if(a >= 0) // a >= 0 ,所以输出0
printf("0");
if(~a >= 0) // ~(a >= 0) ,表达式值为非,所以不输出
printf("1");
if(b >= 0) // 同理
printf("2");
if(~b >= 0) // ~(b >= 0) ,同理
printf("3");
}
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
void main()
{
unsigned short a = -15;
short b = -13;
cout<<"a="<<a<<endl;
cout<<"~a="<<~a<<endl;
cout<<"b="<<b<<endl;
cout<<"~b="<<~b<<endl;
if(a >= 0)
printf("0");
if(~a >= 0)
printf("1");
if(b >= 0)
printf("2");
if(~b >= 0)
printf("3");
}