我是靠谱客的博主 爱笑秀发,最近开发中收集的这篇文章主要介绍宏定义正解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

  1. #include<iostream>
  2. #define SQR(X) X*X
  3. int main(int argc, char* argv[])
  4. {
  5.  int a = 10;
  6.  int k = 2;
  7.  int m = 1;
  8.  a /= SQR(k+m)/SQR(k+m); 
  9.  cout<<"a="<<a<<endl;
  10.  cout<<"SQR(k+m)="<<SQR(k+m)<<endl;
  11.  return 0;
  12. }

 

这道题目的结果是什么啊?

define 只是定义而已,在编择时只是简单代换X*X而已,并不经过算术法则的

a /= (k+m)*(k+m)/(k+m)*(k+m);
=>a /= (k+m)*1*(k+m);
=>a = a/9;
=>a = 1;

 

上文的解释是不对的,difine 确是定义,仅仅是个字面值,编译时,仅作简单的替代,正解如下:

a/=k+m*k+m/k+m*k+m

=>a/=2+1*2+1/2+1*2+1

=>a/=7

=>a=10/7

=>a=1;

并没有上文解释的(),

正确的做法是

  1. #include<iostream> 
  2. #define SQR(X) (X)*(X) 
  3. int main(int argc, char* argv[])
  4. {
  5.  int a = 10;
  6.  int k = 2;
  7.  int m = 1;
  8.  a /= SQR(k+m)/SQR(k+m); 
  9.  cout<<"a="<<a<<endl;
  10.  cout<<"SQR(k+m)="<<SQR(k+m)<<endl;
  11.  return 0;
  12. }

 

最后

以上就是爱笑秀发为你收集整理的宏定义正解的全部内容,希望文章能够帮你解决宏定义正解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部