簡體   English   中英

在c中使用宏

[英]using Macros in c

#include "stdafx.h"
#include<stdio.h>
int aarray[]={1,2,3,4,5,6,7,8};
#define SIZE (sizeof(aarray)/sizeof(int))

int main()
{
    printf("%d\n",SIZE);
    if(-1<=SIZE)printf("1\n");
    else printf("2\n");
    return 0;
}

為什么會打印2? SIZE是8,大於-1,因此應該打印1。但是為什么打印2? 請幫助我理解。

您正在比較一個有符號的值( -1 )和一個無符號的值( SIZE生成的值是size_t ,它是無符號的)。

因此-1提升為無符號,並變得大於SIZE

看一看您喜歡的C書中的類型提升。 sizeof的結果是無符號的,然后將-1轉換為無符號,這是一個很大的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM