gpt4 book ai didi

c - C 编程中是否没有 case 语句,而不是 switch case 顺便说一句

转载 作者:行者123 更新时间:2023-11-30 20:21:16 25 4
gpt4 key购买 nike

我可能使用了错误的方法来执行此操作。但我只是想用 C 编程来锻炼一下我的大脑。给自己的任务是编写一个像命令行游戏一样的“yahtzee”,学习任何导致我必须学习才能完成它的东西。

我确实知道有一种叫做“案例陈述”的东西。但每次我都会用谷歌搜索。我不断收到“switch case 语句”。

让我怀疑 C 是否有 case 语句

此时我想做的就是调用同一个函数 5 次,并将每个不同的返回值放入一个单独的变量中。然后使用下拉式 case 语句打破最后一个变量值,打印出每个变量值。

但它似乎没有调用该函数,因为它通过了开关。因为我似乎找不到用 C 编写 case 语句而不是 switch - case 的正确方法。

如果我错了,请纠正我,但 case 语句不会执行命令,而 switch 似乎不会执行命令。

这里的代码并不多,所以我将把它完整地发布出来。所以你可以看到我真正在做什么。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int randon_number(int min_num, int max_num);

int main(int argc, char **argv[])
{


int i =0, die1 = 0, die2 = 0, die3 = 0, die4 = 0, die5 = 0, num = 0;

switch (i) {
case 1:
die1=randon_number(1,6);
case 2:
die2=randon_number(1,6);
case 3:
die3=randon_number(1,6);
case 4:
die4=randon_number(1,6);
case 5:
die5=randon_number(1,6);
break;
}
// checking just to make sure that it is working written like this.
num=randon_number(1,6);

printf("this is num %d\n\n", num);

printf("d1 %d d2 %d d3 %d d4 %d d5 %d\n", die1, die2, die3, die4, die5);

return 0;
}

int randon_number(int min_num, int max_num)
{
int result = 0, low_num = 0, hi_num = 0;

if (min_num < max_num)
{
low_num = min_num;
hi_num = max_num + 1; // include max_num in output
} else {
low_num = max_num + 1; //include max_num in output
hi_num = min_num;
}

srand(time(NULL));
result = (rand() % (hi_num - low_num)) + low_num;
return result;
}

开关中的所有内容都会返回零。我确实认为案例实际上执行了命令,开关会或不应该执行相同的操作吗?

尽管我正在寻找案例陈述。我厌倦了啄食和狩猎方法,这就是我发布这个问题的原因。

 case (i) {
1;
num=randon_number(1,6);
2;
printf("this is num %d\n\n", num);
break;
}

或我尝试过的任何其他变体都不起作用。

这是一个 BASH case 语句,实际上多次调用该函数并为每个变量获取正确的返回值。

#!/bin/bash

rannum (){
number=$((RANDOM%3))

return $number
}


var=1

case $var in

1)
{
rannum
num1=$number
rannum
num2=$number
}
;;
2)
{
num1=rannum
}
;;
esac

printf "$num1 - $num2\n"

最佳答案

C 中的 case 关键字不是语句;它生成标签,并且仅在 switch 语句的上下文中有效。所以是的,你的谷歌搜索是正确的:switch/case 就是它。不确定您还期待什么或为什么。

另请注意 case 的几个限制:仅限整数值,并且必须以 break 显式终止。

关于c - C 编程中是否没有 case 语句,而不是 switch case 顺便说一句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328467/

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