我是一名c ++自学者,我正在经历这种奇怪的行为。
#include <iostream>
using namespace std;
int main () {
for (int i=0;i<3;i++) {
switch(i) {
case '0' : // do something
cout << "A" << endl;
case '1' : // do something else
cout << "B" << endl;
// no default set
}
}
return 0;
}
有了这个MWE,为什么不执行switch语句?在我的机器上,使用g ++和cmake进行编译,我看到控制台中没有打印出charachter。
感谢您的帮助!
答案 0 :(得分:7)
您的switch语句正在启用字符代码'0'
,'1'
等,当它应该打开数字 0
时,{{1}等等。
此外,您需要在每个部分的末尾添加1
语句,否则每个break
都会出现在下一部分中。
case
答案 1 :(得分:0)
您正在检查i
是否等于'0'
,等于48
。
而是检查它是否等于0
。
switch(i) {
case 0 : // do something
cout << "A" << endl;
case 1 : // do something else
cout << "B" << endl;
// no default set
}
另请注意,如果break
块中没有case
个语句,则会继续执行并执行下一个案例。
答案 2 :(得分:0)
您正在将映射的字符与ints混合... char&#39; 0&#39;和int 0没有保持相同的值。
0 是ascii 30 但是&#39; 0 &#39;是 48
使用默认案例可以帮助您找到原因
答案 3 :(得分:0)
我怀疑你的意思是def get_primary_key_related_model(model_class, **kwargs):
"""
Nested serializers are a mess. https://stackoverflow.com/a/28016439/2689986
This lets us accept ids when saving / updating instead of nested objects.
Representation would be into an object (depending on model_class).
"""
class PrimaryKeyNestedMixin(model_class):
def to_internal_value(self, data):
try:
return model_class.Meta.model.objects.get(pk=data)
except model_class.Meta.model.DoesNotExist:
self.fail('does_not_exist', pk_value=data)
except (TypeError, ValueError):
self.fail('incorrect_type', data_type=type(data).__name__)
def to_representation(self, data):
return model_class.to_representation(self, data)
return PrimaryKeyNestedMixin(**kwargs)
class AccountSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True, required=False)
confirm_password = serializers.CharField(write_only=True, required=False)
class Meta:
model = Account
# ...
class PhysicianSerializer(serializers.ModelSerializer):
user = get_primary_key_related_model(AccountSerializer)
class Meta:
model = Physician
# ...
和class
而不是case 0:
等。差异很微妙,但会导致你的转换永远不会打印任何东西。 '0'的值是字符'0'的基础整数表示,而不是数字0。
答案 4 :(得分:0)
案例标签的值需要与您使用的类型相匹配。
cross-env
表示react-native
需要等于字符文字cross-env NODE_ENV=development BABEL_ENV=development_rn react-native run-ios
或case '0' : // do something
cout << "A" << endl;
case '1' : // do something else
cout << "B" << endl;
。你需要的是像
i
另请注意,如果'0'
为'1'
,则会在没有中断声明case 0 : // do something
cout << "A" << endl;
case 1 : // do something else
cout << "B" << endl;
和cout << "A" << endl;
的情况下执行。