为什么 C++ 中 char 不被视为数字?

2023-12-03

我用 C 编写了一段代码,运行完美,我将其翻译为 C++ 。那里给出了错误的输出。我有一个迭代,我将输入和迭代器变量都用作 char 以节省空间。但表现并不如预期。

unsigned char repeat, i;  
cin >> repeat;
for(i= 0; i < repeat; i++)

等效线是什么

scanf("%hhi", &repeat)

?


为什么 C++ 中 char 不被视为数字?

因为C和C++是不同的编程语言。

参见示例n3337,C++ 标准草案,实际上相当于C++11标准。为了C11编程语言,研究一下n1570CompCert项目。

编程语言是一种规格,通常写在一些文档中。它是语义学与其本身一样重要syntax.

如果您使用某些最新的变体编译 C++ 源代码GCC,我建议invoke it as g++ -Wall -Wextra -g这是为了启用大量警告和一些调试信息。

还可以考虑使用一些静态程序分析工具,例如Frama-C or Clang 静态分析器 or Coverity etc....

另请阅读如何调试小程序以及关于未定义的行为

另请参阅这个网站关于 C 和 C++并调查参考系统(一些“有趣的”C++自由软件我积极贡献的项目,AGI有关的)。

研究现有 C++ 的源代码,至少是为了获得灵感开源项目。Qt or the 鱼壳立即浮现在我的脑海中(但还有成千上万的其他存在于github or on gitlab或其他地方,例如Ghudi, PPL, 福克斯工具包, FLTK)。通过积极为其中之一做出贡献,你会学到很多东西(甚至可能参考系统)

顺便说一句,我强烈推荐明确地初始化 C 或 C++ 中的每个数值变量(所以代码unsigned char repeat=0, i=0;在你的情况下)。任何足够好的优化编译器当它们无用时会删除它们,并调试您的程序(例如使用gdb,特别是在 GNU/Linux系统如Ubuntu or Debian当它的行为变得更加确定时,会更容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 C++ 中 char 不被视为数字? 的相关文章