对类型转换后比较的一点疑惑,详细请参看帖子。

wjlsmail wjlsmail 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
int iData = -1;
unsigned int uiData = -1;
if (iData == uiData)
{
printf("==\n");
}
else
{
printf("Not run here\n");
}

long lData = -1;
unsigned long ulData = -1;
if (lData == ulData)
{
printf("==\n");
}
else
{
printf("Not run here\n");
}

long long llData = -1;
unsigned long long ullData = -1;
if (llData == ullData)
{
printf("==\n");
}
else
{
printf("Not run here\n");
}

///////////////////////////////////////////////////////////////////////////////////////////////
// 小于一个字长时
short sData = -1;
unsigned short usData = -1;

if (sData > usData)
{
printf("sData > usData\n");
}
else if (sData < usData)
{
printf("sData < usData\n");
}
else
{
printf("sData = usData\n");
}

char cData = -1;
unsigned char ucData = -1;

if (cData > ucData)
{
printf("cData > ucData\n");
}
else if (cData < ucData)
{
printf("cData < ucData\n");
}
else
{
printf("cData = ucData\n");
}

return 0;
}


在VS.Net2005环境下,结果是3个等于两个小于,为何呢?因为比较时的类型转换,应该都是等于才对。
和编译器相关? 那么别的编译器会是怎样的呢?

...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
wjlsmail
C语言 70,040 成员 243,237 内容