You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于宏定义SIGN(x)的计算逻辑及各输入值输出确认

没问题,我来帮你明确确认这个宏的行为~

关于#define SIGN(x) ((x < 0)? -1 : (x > 0))的行为解析

这个宏的核心作用是判断输入值x的符号状态,返回对应的整数标识:

  • 负数返回-1
  • 正数返回1(C语言中布尔值true会被隐式转换为整数1)
  • 0返回0

分场景具体结果

  • 当x = 0时:宏展开为((0 < 0)? -1 : (0 > 0)),两个判断条件都不成立,最终返回0
  • 当x < 0(比如x = -3)时:宏展开为((-3 < 0)? -1 : (-3 > 0)),第一个条件成立,返回-1
  • 当x > 0(比如x = 7)时:宏展开为((7 < 0)? -1 : (7 > 0)),第二个条件成立,7>0为真,对应整数1,所以返回1

额外提一句:你补充的外层括号非常关键!如果缺少这些括号,当宏嵌入复杂表达式时,很容易因为运算符优先级的问题导致逻辑错误,现在的写法是安全且规范的。

内容的提问来源于stack exchange,提问作者Kabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:18:30