gpt4 book ai didi

c - 为什么我的案例给出错误?为什么我不能将变量放入 switch 案例中?

转载 作者:行者123 更新时间:2023-11-30 18:40:35 26 4
gpt4 key购买 nike

尝试将变量放入 switch case 时出现 2 个错误:

#include <stdio.h>
int main(int argc, char *argv[]) {
float conversie = 0;
float leu = 1;
float usd = 3.6 * leu;
float eur = 4.4 * leu;
float aur = 139 * leu;
float suma;
float valoare;
char tipmoneda;
printf("introdu moneda pe care vrei sa o schimbi:");
scanf("%c\n", &tipmoneda);
switch (tipmoneda) {
case 'usd':

default:
break;
}

}

以下是错误:

Untitled.c:14:8: warning: multi-character character constant [-Wmultichar] case 'usd': ^
Untitled.c:14:8: warning: overflow converting case value to switch condition type (7697252 to 100) [-Wswitch]
2 warnings generated.

最佳答案

如果您输入"usd"在输入行上,这不起作用; scanf只会读取并存储前导 'u'字符输入tipmoneda (它与多字符常量 'usd' 不匹配)。另外,为了安全起见,您应该在 scanf 中放置一个前导空格。控制字符串:

scanf( " %c", &tipmoneda );

这会告诉scanf跳过任何前导空格。

您只需输入 'u'对于美元,'e'对于 eur , 'a'对于 aur ,然后按如下方式切换:

switch( tipmodena )
{
case 'u' :
// process for usd
break;

case 'e':
// process for eur
break;

case 'a':
// process for aur
break;

default:
// unrecognized option
break;
}

编辑

如果您确实想输入“usd”而不是“u”,您可以执行如下操作:

#include <ctype.h>   // needed for the tolower call below
...
char tipmoneda[4] = {0}; // read tipmoneda as a 3-character string instead of
// a single char
...
scanf( "%3s", tipmoneda ); // note conversion specifier
switch( tolower( tipmoneda[0] )) // switch on lowercase form of first letter
{
// same cases as above
}

tolower call 会将参数转换为小写,因此您可以输入 "usd" , "USD" , "Usd"等等,还有这个工作。请注意,如果您输入的字符串长度超过 3 个字符,则剩余字符将保留在输入流中,可能会弄乱下一个 scanf。称呼。

关于c - 为什么我的案例给出错误?为什么我不能将变量放入 switch 案例中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com