打印字符和整数
printing chars and ints
我的程序中有这段代码,但它不打印数字,但是如果我将"(char)i)"中的"i"切换到任何普通字符,比如说"a",那么它会打印到控制台。
为什么这不打印到我的主机?
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)i);
}
OutputDebugStringA(debugStr);
下面成功打印了一行 1000 "A":
char debugStr[1000];
for(int i = 0; i < 1000; i++)
{
debugStr[i] = ((char)'a');
}
OutputDebugStringA(debugStr);
第一个字符的值为零。
据推测,OutputDebugStringA
将其参数解释为 C 样式字符串:以零结尾的字符序列。所以它会继续打印字符,直到找到零;在这种情况下,这将立即发生,因此不会有任何结果。
第二个示例给出了未定义的行为:它将从数组的末尾蹒跚而行并继续前进,直到找到零值字节,或者到达不可读的内存位置并崩溃。
在 C 中,字符串以 null 结尾。由于将第一个字符设置为 0,因此该字符串被视为空。
23
(数字)与"23"
(字符串)非常不同。
可能因为你从 0 开始,所以你没有得到任何输出。我会把它保持在 32 <= 和 <= 127 之间
参见ASCII表:http://www.asciitable.com/
两件事,int i 从 0 开始,这是空字节。 这很可能是打印函数的终止字符。如果我从非零开始并且仍然不打印,那么您可能需要考虑字节序。在 litte-endian 中,int 是从右到左读取的,而字符是从左到右读取的,因此转换"可能"只查看 int 的最左边的字节。
相关文章:
- 显示基于用户输入的整数的字符
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 将超出范围的整数分配给有符号字符类型
- 碱基对映射 - 将 argv[i] 移动到整数或字符作为输入
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 输入验证以筛选出字符、字符串和一系列整数
- 字符和整数中 **(ptr+1) 的值差异
- 如何将整数向量值插入字符向量
- 字符到整数数组
- 为什么对无符号字符进行算术运算会将它们提升为有符号整数
- 不能将字符转换为整数吗?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 为什么我们不能将使用异或运算找到的整数转换为字符?
- 有没有办法将字符类型转换为整数?
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 取消随机排列整数/字符数组
- 双倍到无符号的整数/字符