首页 热点资讯 义务教育 高等教育 出国留学 考研考公

这个c语言怎么来的结果?

发布网友 发布时间:2022-03-31 00:32

我来回答

3个回答

热心网友 时间:2022-03-31 02:02

楼主肯定是把它当函数用了😂,

#define MAX(x, y) (x) < (y) ? (x) : (y)
10 * MAX(i, j)展开之后就是:
10*i>j?i:j
这样一代入就是:
10*10>15?10:15
很显然是成立的,所以就取10了,
而不是你想当然的
10*(x>y?x:y)
很自然而然的就加上括号了😂😂,这是很多人都会犯的错误,宏定义可以实现类似函数的功能,但实际上终归不是函数,而且宏定义括号里的参数也不是真正的参数,所以不要主观的加括号。在宏展开时对参数进行的只是文本替换,如果在整个三目运算符外面套一个括号的话,结果就是150了

望采纳😁😁😁

热心网友 时间:2022-03-31 03:20

printf("%d,%s"\n,--i,p++); 应该是printf("%d,%s\n",--i,p++); *p=s+3;这个是指p 指向s数组的第四个元素(4); printf("%d,%s\n",--i,p++);打印--i的值与p指向数组的元素 (从s[3](即4)开始到最后一个元素 p指向s[]的地址,操作p等于操作s[]数组追问靠恁娘

热心网友 时间:2022-03-31 04:54

做这类宏相关的题目,最好在草稿纸上进行宏展开,展开后k的赋值表达式为:

 k=10*(i)>(j)?(i):(j)

代入对应变量值,即为:

k=10*10 > 15 ? 10 : 15

因为100>15 为真,所以最后 k=10

追问谢谢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com