int b[5] = {1,2,3,4,5};
int *s = &b[0];
int *p = &b[1];
int *q = &b[2];
int *r = &b[2];
我的问题是,当我使用p < q < r
比较if( p < q < r)
时,我收到了è¦å‘Šä¿¡æ¯ã€‚
我的想法,首先是(p < q) == True
,所以ä¸å¯èƒ½å°†å¸ƒå°”值与整数(r的地å€å€¼ï¼‰è¿›è¡Œæ¯”较。但是,当True
被视为整数时,它是1.对å—?所以,1 < r
å¯èƒ½æœ‰æ„义,我的猜测。
我的想法出了什么问题?
ç”案 0 :(得分:2)
1 < r
ä¸èµ·ä½œç”¨ï¼Œå› 为1
是一个整数,而r
æ˜¯ä¸€ä¸ªæŒ‡é’ˆã€‚å› æ¤è¦å‘Šã€‚
æˆ‘çš„çŒœæµ‹æ˜¯ä½ ï¼ˆa)æ„味ç€å–消引用指针,(b)需è¦ç”¨&&
替æ¢é“¾å¼æ¯”较。
if (*p < *q && *q < *r)
ç”案 1 :(得分:1)
您似乎认为表达å¼p < q < r
转æ¢ä¸ºâ€œpå°äºŽq,qå°äºŽrâ€ï¼Œè¿™æ˜¯å…¸åž‹çš„æ•°å¦ç¬¦å·ã€‚
但是,C编程è¯è¨€ä¸ä¸€å®šéµå¾ªæ•°å¦çº¦å®šã€‚ p < q < r
实际翻译为p < q
的内容å¯èƒ½ä¸º0或1,具体å–决于是å‡è¿˜æ˜¯çœŸï¼ŒåŽè·Ÿ0 < r
或1 < r
基于之å‰çš„差异。
æ£å¦‚å¦ä¸€ä½ç”¨æˆ·æŒ‡å‡ºçš„é‚£æ ·ï¼Œå†™â€œpå°äºŽq且qå°äºŽrâ€çš„æ£ç¡®æ–¹æ³•æ˜¯p < q && q < r
。
ç”案 2 :(得分:0)
更改您的æ¡ä»¶ï¼š
if(p < q < r) {}
è¦ï¼š
if(p < q && q < r) {}