我剛剛下載了MSVC2013RC,因爲我聽說它將會更好地處理c標準,而MSVC以前的版本則更好。所以我剛下載並測試了一些我在Windows平臺上真正需要的東西。MSVC13RC仍然不尊重C標準?
但已經第一次測試讓我非常失望。
#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
int testFunction(int iIn);
int main(int argc, char** argv)
{
int *TheKiddingBool;
TheKiddingBool= NULL;
TheKiddingBool= malloc(sizeof (int));
*TheKiddingBool= 17;
_Bool bWow;
bWow = true;
if (testFunction(*TheKiddingBool) == bWow)
{
printf("\r\nQAtest succesed!\r\n");
}
return 0;
}
int testFunction(int iIn)
{
return iIn;
}
testFunction(*TheKiddingBool) == bWow
的比較返回false。 這是在MSVC13的C編譯器中的一個相當困難的錯誤?
還是我剛不懂行
6.3.1.2布爾類型
§1當任何標量值轉換爲_Bool,結果是0,如果值進行比較等於 0;否則,結果爲1.
的c99 ISO/IEC 9899:TC3相當錯?
比較當帶'_Bool'的int,是將int轉換爲_Bool還是將_Bool轉換爲int? –
嗯有趣的問題,但不應該一個聰明的編譯器注意到,如果我用'_Bool'將comapre'int'轉換爲'_Bool',那麼將int轉換爲無意義? – dhein
6.3.1.1 - _Bool的排名應小於所有其他標準整數類型的排名。 – msam