C语言中switch可以用文字判断嘛
我这个是错误的,,printf("请输入您要查找的用户姓名:");
char i;
scanf("%s",&i);
switch(i){
case '张一':
z();
break;
case '王二':
w();
break;
} 不允许这种写法。其次,在C中单引号值的是一个char类型的字符。不能是汉字,更不能是两个汉字了。 newu 发表于 2019-6-28 15:06
不允许这种写法。其次,在C中单引号值的是一个char类型的字符。不能是汉字,更不能是两个汉字了。
所以switch不能用文字判断嘛 zhangke 发表于 2019-6-28 15:11
所以switch不能用文字判断嘛
这要自己指定字符集才行吧 bin554385863 发表于 2019-6-28 15:16
这要自己指定字符集才行吧
我也不清楚{:10_266:} zhangke 发表于 2019-6-28 15:11
所以switch不能用文字判断嘛
不能 在Java里面支持字符串,就可以 C++可以
//这个只是计算字符串hash的一个方法而已
constexpr const int Calc(const char *p)
{
int i = 0;
int hash = 0;
while (*p)
{
hash =hash*1423+ (*p);
p++;
}
return hash&0x7FFFFFFF;
}
int main()
{
char buf = { 0 };
cin >> buf;
switch (Calc(buf))
{
case Calc("hello"):
cout << "hello";
break;
case Calc("gg"):
cout << "gg";
break;
default:
cout << "没有";
break;
}
return 0;
} 迷雾少年 发表于 2019-6-28 21:13
C++可以
所以这个最终比较的也是int型变量。 newu 发表于 2019-6-29 11:55
所以这个最终比较的也是int型变量。
不管比较的是什么,达到目的就行了 也就打多几个函数名字的功夫 newu 发表于 2019-6-29 11:55
所以这个最终比较的也是int型变量。
只不过C++才可以 迷雾少年 发表于 2019-6-29 15:39
只不过C++才可以
注意楼主的题目是:swith可以用文字判断嘛
1 你的这种函数的方法C也可以
2 固然你的方法可行,但不符合楼主提问的意思 newu 发表于 2019-6-29 15:53
注意楼主的题目是:swith可以用文字判断嘛
1 你的这种函数的方法C也可以
C没有C++里的constexpr,想知道怎么做到这种方法。 迷雾少年 发表于 2019-6-29 18:27
C没有C++里的constexpr,想知道怎么做到这种方法。
constexpr本质上就是给编译器看的,也就是在编译阶段就确定了的东西,
那我在C中为什么不能写个宏提前把你的hash值算好呢?一样的。 newu 发表于 2019-6-29 18:42
constexpr本质上就是给编译器看的,也就是在编译阶段就确定了的东西,
那我在C中为什么不能写个宏提前 ...
求参考代码 迷雾少年 发表于 2019-6-29 18:54
求参考代码
代码我没有写,我是这样想的,既然c++的新特性都可以实现,那在C里面实现只不过比较麻烦而已。
我的几点猜想,
C++中的case后边是不是真的C中的Case呢,又或者只是个if...else
如果真的是C中的case的话,那么它这个表达式肯定是在编译阶段就算好的
所以说如果要在C中实现的话,用你的这种算字符串摘要的方法,也可以用if..else...if...else..
newu 发表于 2019-6-29 19:26
代码我没有写,我是这样想的,既然c++的新特性都可以实现,那在C里面实现只不过比较麻烦而已。
我的几 ...
我试了 按你说的写个宏函数编译器期计算出hash值编译器无法通过 甚至case ((int)2+(int)"0"):这样确定的常量都不行 我用C做不到我C++那样的函数的方法,所以想知道你怎么实现那种函数的方法 迷雾少年 发表于 2019-6-29 19:29
我试了 按你说的写个宏函数编译器期计算出hash值编译器无法通过 甚至case ((int)2+(int)"0"):这样确 ...
不写了,太累了{:10_266:}
我上边说了我的想法,一种方式就是写宏定义查表,另一种放到if...else newu 发表于 2019-6-29 19:38
不写了,太累了
我上边说了我的想法,一种方式就是写宏定义查表,另一种放到if...else
if-else就不是主题了,有空的时候麻烦帮我写下我上面C++那种实现的C版本,想学习学习。
页:
[1]