程序猿之---C语言细节9(宏定义、max(a,b)宏定义细节、大小端判断、(int&)a什么意思)

本文深入探讨了C语言中的宏定义,详细阐述了max(a,b)宏定义的技巧与注意事项,并提供了大小端判断的方法,同时解释了(int&)a的含义。" 116463447,7800548,酸奶饮料口味测试:消费者偏好分析,"['数据挖掘', '机器学习', '数据分析']
摘要由CSDN通过智能技术生成

主要内容:宏定义、max(a,b)宏定义细节、大小端判断、(int&)a什么意思

#if 1 
#include <stdio.h>

// 注意空格 
#define F (x) ((x) - 1)   // F代表后面
#define F(x) ((x) - 1)    // F(x)代表后面

#define T1 struct type*
T1 a,b;  // 使用上面在定义多个变量时达不到目的,被解析为struct type* a,b;  a为指向结构体的指针,而b被定义为一个结构体 
 // 经典的笔试题宏定义求最大值
//#define max(a,b) a>b?a:b          //这个很容易错,下面的比较不容易错,但是也会有错的时候 
#define max(a,b) ((a)>(b)?(a):(b))     // 写成这样得不到满分,仍然可能会出现问题,解释如下 
                                       // 同时这个宏定义也没有考虑传入不同类型的参数情况,
									   									   
 /*  
  *   如果一个操作数在两处被用到,就会被求值两次;
  *   表达式max(a,b)中如果带有副作用,在比较大小时会计算一次,在后面计算值时也会计算一次 
  *   错误例子如下 : 
  */
int main(int argc, char** argv)
{
    int x[3] = {2,3,1};
    int biggest = x[0];
    int i = 1;
    
    while(i < 3)
    {
    	biggest = max(biggest, x[i++]);  // 被拆解为biggest > x[i++]?bigg
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值