c - 哪个格式说明符

标签 c

#include <stdio.h>
#include <stdlib.h>
#define calc(a,b) (a*b)/(a-b)
void calculate(){
    int a = 20, b = 10;
    printf("%f\n", calc(a+4,b-2));//output 0.00000
}

如何打印实际答案,4.83。

最佳答案

#define calc(a,b) ((a)*(b))/((a)-(b))

你能找出多余的括号吗?

--> calc(a+4,b-2) 解析为 ((a+4)*(b-2))/((a+4)-( b-2))。正确。

没有额外括号的解决方案:

--> calc(a+4,b-2) 解析为(a+4*b-2)/(a+4-b-2)。这是非常不同的!

关于c - 哪个格式说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084573/

相关文章:

c - fsync() 跨数据 block 的原子性

检查文件是否存在于只有部分名称的目录中

c - 如何在 C 中将 2 个带符号的 32 位数字转换为 64 位数字

c - nftw 线程安全

c - 使用 cabal 安装 ffmpeg-light

c - 在调用函数中接收二维指针数组

c - 为什么 GCC 不优化掉函数序言和结尾 (push ebp; mov ebp, esp; ...; pop ebp)

c - *a = b 和 = b 的区别?

c - ‘{’ token 之前的预期表达式

c++ - 变量后加号是什么意思?