Learpcs Asked:2020-07-12 07:03:30 +0000 UTC2020-07-12 07:03:30 +0000 UTC 2020-07-12 07:03:30 +0000 UTC 使用了未初始化的 char 变量。C++ 772 #include <iostream> using namespace std; int main() { while (char ch = cin.get() && ch != '=') { //что нибудь... } } 输入任何字符时 - 关于未初始化变量的异常ch。为什么这里会捕获异常?ch很像它被初始化了。 c++ 3 个回答 Voted HolyBlackCat 2020-07-12T07:47:36Z2020-07-12T07:47:36Z 这个: while (char ch = cin.get() && ch != '=') 不按你的想法做。这与以下内容相同: while (char ch = (cin.get() && ch != '=')) 最好这样写: while (char ch = cin.get(); ch && ch != '=') 但我知道在左侧&&您试图检查该角色是否被成功考虑,而不是将其与零进行比较。(.get()出错时返回非零值。) 那么最好这样写: while (char ch = cin.get(); cin && ch != '=') Best Answer Harry 2020-07-12T11:53:59Z2020-07-12T11:53:59Z 我不会打扰并使用一个循环,在这个循环for中,一切都非常明显并且很久以前就决定了:) for(char ch = cin.get(); ch != '='; ch = cin.get()) 但是,最好是这样: for(char ch; cin.get(ch) && ch != '=';) icYFTL 2020-07-12T07:25:49Z2020-07-12T07:25:49Z 我怀疑char ch = cin.get()它仅针对第一个条件进行初始化。粗略地说,在条件中声明的变量将仅适用于该条件,但不再适用。
这个:
不按你的想法做。这与以下内容相同:
最好这样写:
但我知道在左侧
&&您试图检查该角色是否被成功考虑,而不是将其与零进行比较。(.get()出错时返回非零值。)那么最好这样写:
我不会打扰并使用一个循环,在这个循环
for中,一切都非常明显并且很久以前就决定了:)但是,最好是这样:
我怀疑
char ch = cin.get()它仅针对第一个条件进行初始化。粗略地说,在条件中声明的变量将仅适用于该条件,但不再适用。