我是一名刚入门的C++程序员,对C++了解非常少。我在IDE和编译器Dev-C++ 5.6.3上创建了一个程序,但遇到了错误:ISO C++ 禁止在指针和整数之间进行比较[-fpermissive]。我不知道这意味着什么。
"Y"
、"y"
、"n"
和"N"
是C风格的字符串,它们是以空字符结尾的字符数组。当尝试比较它们时,它们会退化为指向const char
的指针。另一方面,inputy
声明为int
。这就是你在比较指针和整数时出错的原因。
为了解决这个问题,应该将inputy
与字符而不是字符串进行比较:'Y'
、'y'
、'n'
和'N'
(注意使用单引号而不是双引号)。
您还有另一个问题。您声明了int inputy;
,但是您正在尝试通过scanf("%c",&inputy);
读取字符。格式字符串%c
与&inputy
的数据类型不匹配。如果您想读取字符,应该使用正确的输入变量类型:
char inputy;
scanf("%c", &inputy);
int
来传递或返回字符。 - Mike DeSimoneinputy
使用的内存通过某种方式初始化为0
,那么即使指针指向错误的类型(因为指针指向的字节是int
的最低位字节),也会观察到正确的行为。从语言的角度来看,这绝对是“未定义的行为”。 - Mike DeSimone
goto
е”ҜдёҖеҘҪзҡ„з”ЁйҖ”жҳҜеңЁжҹҗдәӣзҘһз§ҳжғ…еҶөдёӢиҝӣиЎҢй”ҷиҜҜжҒўеӨҚпјҢжҜ”еҰӮеңЁжІЎжңүејӮеёёеӨ„зҗҶзҡ„е№іеҸ°дёҠгҖӮ - Mike DeSimoneLobby
、Shut2
和Error
引用的代码没有发布,因此无法知道在这里发生了什么。另一个大问题是混合使用<iostream>
(cout
) 和<stdio.h>
(scanf
,getch
) 代码。这可能会产生各种奇怪的副作用,因为这两个 I/O 库并不总是保持同步。 - Mike DeSimonegoto
更好的控制程序流程的方法。 - user3553031scanf
中的%c
期望的是char *
而不是int *
。 - T.C.