参数传递,函数的输出

img


函数是要输出cheer,为什么最后可以输出cheer2,printf那一行的cheer到底是函数cheer还是单纯的英文字母cheer

你的问题是什么

因为cheer()函数的print()语句里,使用格式字符串%d打印参数i的值,所以输出了"cheer 2",如果不需要打印i的值,把格式字符串%d以及后面的i去掉即可。

修改如下:

参考链接:


c语言中的格式化字符串_c语言中格式化字符串_MyLinChi的博客-CSDN博客 C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。一、类型我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示:字符 意义a 浮点数、十六进制数字和p-计数法(C99)A _c语言中格式化字符串 https://blog.csdn.net/MyLinChi/article/details/53116760


#include <stdio.h>

void cheer(int i){
    
    // https://www.runoob.com/cprogramming/c-function-printf.html
    // https://blog.csdn.net/MyLinChi/article/details/53116760
    // 如果不需要打印参数i的值,去掉printf()语句里的格式字符串%d以及后面的i即可 
    printf("cheer\n");
}

int main(void){
    
    cheer(2.4);
    
    return 0;
}

img

【以下回答由 GPT 生成】

根据给出的代码,问题出现的原因是因为在函数cheer中,参数i的类型是int,而在函数main中调用cheer函数时传递的实参是2.4,这是一个浮点数。根据C语言的隐式类型转换规则,在将浮点数传递给int类型参数时,会将浮点数进行截断,只保留整数部分。因此,传递给cheer函数的实参将被截断成2,而不是期望的2.4。

修改代码如下:

#include<stdio.h>

void cheer(double i) {
    printf("cheer%.1f\n", i);
}

int main() {
    cheer(2.4);
    return 0;
}

通过将cheer函数中的参数类型改为double,可以接收浮点数类型的参数。在printf语句中使用%.1f的格式化字符串,可以保留一位小数并输出。这样修改后,最终输出的结果将是"cheer2.4",而不会包含单纯的英文字母cheer。


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

是英文cheer