Dan*_* Jr 0 c pointers dereference
好的,这是我的代码:
#include <stdio.h>
void convert_weight(int x , char a, int* y, char* b)
{
if (a == 'F')
*y = (x-32) * 5 / 9;
*b = 'C';
if(a == 'C')
*y = x*9 / 5 + 32;
*b = 'F';
}
int main()
{
int degrees1 = 50, degrees2;
char scale1 = 'F', scale2;
convert_weight(degrees1, scale1, °rees2, &scale2);
printf("%d %c = %d %c\n", degrees1, scale1, degrees2, scale2);
degrees1 = 10;
scale1 = 'C';
convert_weight(degrees1, scale1, °rees2, &scale2);
printf("%d %c = %d %c\n", degrees1, scale1, degrees2, scale2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
50 F = 10 F
10 C = 50 F
Run Code Online (Sandbox Code Playgroud)
请注意,我的第一行是返回10 F而不是10 C.我不太确定为什么会发生这种情况.如果char a == 'F'那时我试图通过derefrencing将scale2设置为等于'C',就像我在为它看起来完美的度数2所做的那样.我无法在代码中看到错误导致我为两个输出获得'F'.
你缺少大括号:
void convert_weight(int x , char a, int* y, char* b)
{
if (a == 'F')
{
*y = (x-32) * 5 / 9;
*b = 'C';
}
if(a == 'C')
{
*y = x*9 / 5 + 32;
*b = 'F';
}
}
Run Code Online (Sandbox Code Playgroud)
没有牙套,*b将永远'F'.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |