C语言中如何直接将函数返回值作为另一函数参数?代码问题求助
问题分析与解决
问题根源
你的dobrar和triplica函数虽然声明了参数p1、p2,但函数内部完全没有使用这些参数,反而直接引用全局变量n1。当调用triplica(dobrar(n1))时,dobrar返回的2并没有被triplica接收使用,triplica依然用原来的全局变量n1=1计算,最终得到3而非预期的6。
修正后的代码
#include<stdio.h> // 移除不必要的全局变量,改用参数传递数据 int dobrar(int num){ return 2 * num; } int triplica(int num){ return 3 * num; } int main(){ int n1; printf("digite um numero \n"); scanf("%i", &n1); printf("o n1 dobrado %i \n ", dobrar(n1)); // 此时triplica接收dobrar返回的2,计算3*2=6 printf("o numero triplicado %i", triplica(dobrar(n1))); return 0; }
补充说明
全局变量容易引发这类逻辑错误,它的值可能在程序运行中被意外修改,且依赖全局变量的函数复用性差。尽量通过参数传递数据,让函数逻辑更清晰、独立。
内容的提问来源于stack exchange,提问作者Amner Brel
相关产品推荐
相关产品推荐

