【发布时间】:2013-03-26 20:55:37
【问题描述】:
我是 C 语言的初学者,这是我的问题。在 C++ 中,我会以这种方式查找错误的输入(不是无符号整数):
long double c;
cin >> c;
if (c == (unsigned int) c) {
cout<<"OK";
}
else
cout<<"NOT OK";
但是,现在学习 C 时,我尝试以相同的方式进行操作,但它不起作用:
long double c;
scanf("%lf", &c);
if (c == (unsigned int) c) {
printf("OK\n");
}
else
printf("NOT OK\n");
关于如何修复它的任何建议?我的任务是只使用 scanf 而不使用字符串来做到这一点。我不想输入负数和浮点数。为什么这不起作用?
【问题讨论】:
-
当您希望输入为
unsigned int时,为什么要扫描到long double? -
@Xymotech “我需要检查负数和浮点数。”
-
我正在扫描 double 以便当我比较 (c == (unsigned int) c) 时,这里的 c 仍然是浮点数,而不是转换为整数。这样我可以检查输入的数字是否是例如“1.2”而不是“1”。