ʲôʱºò -1 »á´óÓÚ 1 ?
[quote][font=Courier][color=black][/color][color=blue]-(dearvoid@LinuxEden:Forum)-(~/tmp)-[$$=3899 $?=0][/color] [color=red]; cat foo.c
[/color][color=black]#include <stdio.h>].I z/x$VLj^
#include <stdint.h>
9H4_/dL,L(f] x
#define INT_CMP(a, b) \
do { \
if ((a) > (b)) { \4\ Ndy y$n
printf("%s > %s\n", #a, #b); \U:}6~ SY T
} else { \Udk5N [}M6YV
printf("%s < %s\n", #a, #b); \4]hG$p"so!B
} \2p `#p!n:nYF
} while (0)h(v/e)O Op7ork1\
oV)B:WBd
intIi8\#o4Q o
main(int argc, char * argv[])FA5[\#S"o9iK
{
INT_CMP(-1, (unsigned char)1);
INT_CMP(-1, (unsigned short)1);+cK)@[pi d
INT_CMP(-1, 1U);
INT_CMP(-1, 1LU);OAP s\,E2V8M
INT_CMP(-1, 1LLU);
return 0;
}0e g U#@aW'\`&QI
[/color][color=blue]-(dearvoid@LinuxEden:Forum)-(~/tmp)-+zOG6c^t
[$$=3899 $?=0][/color] [color=red]; gcc foo.c
[/color][color=black][/color][color=blue]-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=3899 $?=0][/color] [color=red]; ./a.out t6I9X1x&];?qV5Vm
[/color][color=black]-1 < (unsigned char)1
-1 < (unsigned short)1K~'F3a Q5xg
-1 > 1U
-1 > 1LU
-1 > 1LLUbbNLp'X
[/color][color=blue]-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=3899 $?=0][/color] [color=red]; bye
[/color][color=black][/color][/font][/quote] ¸ã²»¶®Äãµ½µ×ÔÚÓÃʲôϵͳ£¬·´ÕýÎÒ¿´²»ºÜ¶®ÄãÕâÔ´Â룬¼ÈÈ»»¹Ã»ÓÐÈËÀ´»Ø´ð£¬ÎÒÖ»ºÃÏÈ̸̸ÎÒ×Ô¼ºµÄ¼û½âÁË¡£
#include <iostream>zpYq3WE7}+M3i(R"e
using namespace std;)}Y7WAV?4t
int main()
{
cout<<sizeof(-1)<<endl;2naY ` A E
return 0;8e1i8b!iq P:g
}p+Y_N}+u1M2H#G
ÄãÊÔÒ»ÊÔÉÏÃæÕâ¶Î´úÂë°É£¬½á¹û»áÊä³ö4£¬Õâ˵Ã÷gcc»áĬÈÏΪÈÎÒ»ÕûÊýÀ©³äΪintÐÍ£¬-1±»À©³äΪint»¹ÊÇ-1,µ±Ëü×÷Ϊһ¸öÓзûºÅµÄÕûÊýʱ×ÔÈ»»áСÓÚ1;¶øµ±ËüÓëÒ»¸ö±ÈËü±¾ÉíλÊý´ó»òÏàµÈµÄÎÞ·ûºÅÊý¾ÝÏà±Èʱ,ÔòËüµÄÄÚÈݻᱻÀ©³ä£¬×÷Ϊһ¸öÎÞ·ûºÅµÄÕûÊý£¬ÒªÖªµÀ£¬£¨unsigned int)-1Õâ¿ÉÊÇÒ»¸öºÜ´óµÄÊý¾ÝÁË¡£Ç°Á½¸ö±È½ÏËäȻҲ×öÁËÇ¿Ààת»»£¬¿ÉÊÇËüÃÇÓëÇ°ÃæµÄÊý±È½Ïʱ£¬È´²»ÄÜÈÃÇ°ÃæµÄ-1³ÉΪÎÞ·ûºÅÕûÊý£¬ÒòΪËüÃǵÄλÊýûÓÐ4룬²»×ãÒÔʹ-1µÄ×î¸ßλ¼´·ûºÅλ³ÉΪÊýÖµ
¶Ô²»Æð£¬Îҵıí´ïºÜ²»Çå³þ£¬Ï£ÍûÄãÄÜÃ÷°×ÎÒµÄÒâ˼£»Èç¹û²»Ã÷°×:'( :'( £¬ÎÒҲû°ì·¨£¬½¨Òé¿´¿´»ã±àµÄÊé°É£¬×ÔÈ»¾ÍÇå³þÁË¡£
Èç¹ûÄã¿´ÁËÖ®ºó˼·¸üÂÒ£¬ÏëÒªÂîÎÒ£¬¾ÍÇë±ã°É£¬Ë³±ãÄùýÓÊÏ䏸ÄãÂÃâµÃÄãÎÞ´¦·¢Ð¹.