為什么這個(M+1)*M等于9,NUM等于8啊,求大佬指導
#include<stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
printf("%d\n",M);
printf("%d\n",M+1);
printf("%d\n",(M+1)*M);
printf("%d\n",NUM);
uj5u.com熱心網友回復:
宏定義就是等價替換呢(M+1) * M == (N+1+1) * N+1==(2+1+1)*2+1=9
uj5u.com熱心網友回復:
宏定義加括號很重要,不然不會按照你的預想去計算~
uj5u.com熱心網友回復:
VC編譯選項加/EP /P(專案、屬性、配置屬性、C/C++、前處理器、預處理到檔案:是,預處理取消顯示行號:是),重新編譯,查看宏展開后對應的.i檔案。gcc加-E http://bbs.csdn.net/topics/391003898uj5u.com熱心網友回復:
這個一模一樣的代碼我都看過幾十個帖子了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9502.html
標籤:C語言
