不明白为什么答案是8?可以解答一下吗

img


按我的理解我选的是9,为什么呢?想不明白11111111111111

记住 宏定义 不要预先自己去计算,一定要替换后 再去计算

z = 4 + FUN(x, y);
// 替换后
z = 4 + 5 < 8 ? 5 : 8;
// + 的优先级高于 <,所以先计算 4 + 5 = 9
z = 9 < 8 ? 5 : 8
// 9 < 8 不成立, z = 8

就是9,他这答案错了吧

展开后是z=4+5<8 ? 5:8
这时你应该知道答案了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7694993
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:习题8-9 分类统计各类字符个数
  • 除此之外, 这篇博客: 大一寒假算法题中的 1. 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    给出数字到字母的映射与电话9键对应字母相同。
    注意 1 不对应任何字母。

    示例

    输入:“23”
    输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]

    #include <stdio.h>
    int main(void)
    {
    	int n, a, b;
    	int i, j, k, p;
    	char *character[10]={ "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};	
    	scanf("%d", &n);
    	b = n % 10;
    	a = n / 10;
    	if( a>1 && a<10 && b>1 && b<10 )
    	{
    		a = a - 2;
    		b = b - 2;
    		for(i=a, j=0; character[i][j] != 0; j++)
    		{
    			for(k=b, p=0; character[k][p] != 0; p++)
    			{
    				printf("%c%c ",character[i][j], character[k][p]);
    			}
    		}
    	}
    	
    	else
    	{
    		printf("error!");
    	}
    	return 0;
    }
    
  • 您还可以看一下 邱石老师的10分钟实现微信小程序支付功能课程中的 新8~动态修改商品名和价格小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^