switch判断char*
时间: 2023-07-23 12:05:06 浏览: 143
在C语言中,switch语句只能使用整型或枚举类型作为判断条件,不能使用指针类型。但是我们可以通过将字符数组转化为整型来实现类似的功能。
假设我们有一个字符数组char *str,可以通过以下方式将其转化为整型:
```
int hash = 0;
for (int i = 0; str[i]; i++) {
hash = hash * 31 + str[i];
}
```
这个hash值可以作为switch语句的判断条件。例如:
```
char *str = "hello";
int hash = 0;
for (int i = 0; str[i]; i++) {
hash = hash * 31 + str[i];
}
switch (hash) {
case 'h' * 31 * 31 * 31 + 'e' * 31 * 31 + 'l' * 31 + 'l':
printf("Hello!\n");
break;
case 'w' * 31 * 31 * 31 + 'o' * 31 * 31 + 'r' * 31 + 'l':
printf("World!\n");
break;
default:
printf("Unknown string!\n");
}
```
这段代码会输出"Hello!",因为hash值与'hello'对应的hash值相等。
相关问题
switch判断uint_
在 C++ 中,我们不能使用 switch 语句来判断 uint 类型的变量。因为 switch 语句只支持整数类型(包括 char、short、int 和 long)以及枚举类型的判断,而 uint 类型不属于这些类型之一。
但是,我们可以使用 if-else 语句来实现对 uint 类型变量的判断。例如:
```c++
uint32_t value = 100; // 假设 value 是 uint32_t 类型
if (value == 100) {
// ...
} else if (value == 200) {
// ...
} else {
// ...
}
```
另外,如果你需要根据 uint 类型变量的值进行判断并执行相应的操作,你也可以使用数组或者映射表来实现。例如:
```c++
uint32_t value = 100; // 假设 value 是 uint32_t 类型
const char* actions[] = {
"action1",
"action2",
"action3",
// ...
};
if (value < sizeof(actions) / sizeof(actions[0])) {
std::cout << actions[value] << std::endl;
} else {
// ...
}
```
在上面的示例中,我们使用一个字符串数组来存储所有可能的操作,然后根据 value 的值来获取相应的操作,并执行其相应的代码。
C语言switch 判断字符串
在C语言中,直接使用`switch`语句判断字符串通常是不可能的,因为`switch`语句是针对整型、枚举类型等数值类型的,而不是字符串。然而,有一些间接的方式来模拟字符串比较。
一种常见的做法是将字符串转换为整数,比如ASCII值,然后基于这个整数做比较。例如,可以使用`strcmp()`函数先比较字符串,然后根据结果决定执行哪种操作:
```c
#include <stdio.h>
#include <string.h>
int compare_strings(const char* str1, const char* str2) {
int result = strcmp(str1, str2);
switch (result) {
case 0: // 如果str1和str2相等
printf("Strings are equal.\n");
break;
case -1: // 如果str1小于str2
printf("str1 is less than str2.\n");
break;
case 1: // 如果str1大于str2
printf("str1 is greater than str2.\n");
break;
default: // 非法情况
printf("Invalid comparison.\n");
break;
}
return 0;
}
int main() {
char str1[] = "apple";
char str2[] = "banana";
compare_strings(str1, str2);
return 0;
}
```
在这个例子中,我们并没有直接用`switch`切换字符串,而是通过比较结果进行不同的操作。
阅读全文