【发布时间】:2020-12-06 15:46:59
【问题描述】:
我正在上 C++ 的强化课程,我是那种喜欢并想了解阳光下所有事物的人,否则我无法继续我的家庭作业。
char anything[5]{};
cin >> anything;
cout << anything << endl;
我可以在控制台中写“Hello”,一切都很好。写“H”也不错,“Hel”也不错。但是不应该是写“Helloo”或“Hellooo”,它有效!我写“Hellooooooooooooooooooooooooooooooooo”程序崩溃的那一刻,没关系。使用数字时也是如此。
为什么会这样?我正在使用 CodeLite。
据我了解,如果我写了超过 5 个字符,程序不应该允许它,但它确实允许。
这背后的解释是什么?
【问题讨论】:
-
程序不应该允许它 你为什么这么认为?您的程序不会限制输入该变量的数据量。这样做是你的。
-
如果它没有教你未定义的行为,那么“C++ 强化课程”可能不会那么好。也许你想要一个 good C++ book 代替?
-
另请注意:
Hello是 5chars,您需要为空终止符留出空间。 -
如果程序没有做任何事情来限制输入那个变量的数据量,为什么在我写了一定长度的Hellooooooo之后它就停止了?
-
@churill “正在做”,即尚未完成