【发布时间】:2011-10-05 07:53:42
【问题描述】:
这段代码的输出:
const char *buff = "*_2D 1";
char field[10];
int flag;
sscanf(buff, "%s %d", field, &flag);
printf("field:%s flag:%i\n", field, flag);
是field:*_2D flag:1
但是,将 int 更改为 bool 会导致奇怪的行为:
const char *buff = "*_2D 1";
char field[10];
bool flag;
sscanf(buff, "%s %d", field, &flag);
printf("field:%s flag:%i\n", field, flag);
输出为field: flag:1
谁能解释这里发生了什么?我原以为 bool 会被解释为一个 int,它似乎是,但字符串的其余部分消失了。
【问题讨论】:
-
将 C++ 类型与 C IO 函数混合是一个坏的想法。
-
@ybungalobill: 什么 C++ 类型?
-
@Salgar:它也是 C99 类型(别名)。但是你已经用“C”和“C++”标记了这个问题;您实际使用的是哪种语言?
-
@Salgar:旧 C 还是 C99?如果你包含 stdbool.h,C99 就有它