为什么这个布尔值在 C++ 而不是 Java 中编译
Why does this boolean compile in C++ and not in Java?
在C++中,此表达式将编译,运行时将打印test
:
if(!1 >= 0) cout<<"test";
但在 Java 中,这不会编译:
if(!1 >= 0) System.out.println("test");
相反,需要括号:
if(!(1>=0)) System.out.println("test");
但是test
不会打印,因为1 >= 0
是真的,NOT
真的就是假的。
那么为什么它会在C++中编译并打印出test
,即使该语句是错误的,但在 Java 中却不是?
感谢您的帮助。
这是因为!1
在C++中有效,但在Java1中无效。
两种语言都将!1>=0
解析为(!1)>=0
因为(在 C+ 和 Java 中)!
的优先级高于 >=
。
所以(在C++中),(!1)>=0
-> 0>=0
-> true
但(在Java中)!1
(!int
)是一个类型错误。
但是(在C++或Java中),!(1>=0)
-> !(true)
-> false
。
1 Java 仅定义boolean
类型上的!
运算符。
在java中,一元运算符!
的优先级高于条件运算符>=
。这就是为什么它需要括号()
.
下面是 Java 运算符优先级的详细信息表。
但是,在C++条件中的正值称为boolean true
值。因此,if(!1>=0)
在C++中有效,但在 Java 中无效。在Java中,boolean
值只有true
和false
。它从不将正值视为真实。
相关文章:
- 尝试用java代码编译和运行c++代码
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- 编译 Java TD 客户端时出现构建错误
- 在为 Java 编译动态链接文件时,我应该选择哪些 g++ 参数
- 使用 C++ 编译和运行 java 文件时无法装入主类
- 在SWIG和Visual Studio 2015中使用Java中编译的DLL
- 在Java(JNI)中与Mingw C 一起编译64位静态LIB
- 如何在Raspberry pi中使用JNI GPIO原生库编译和运行Java程序
- 用java编写源代码,并将其编译为其他语言的各种可执行文件?多重编译
- 使用jni.h在C++中编译java方法时出现构建错误
- 如何编译Java原生库
- 在Java/PHP/Python框架内,在编译的C/C++代码中运行算法
- 通过JNI调用简单的java静态方法是不起作用的,尽管c++编译并运行它
- 我们有没有像c一样用java进行条件编译
- 为什么这个布尔值在 C++ 而不是 Java 中编译
- 使用通配符编译 Java 泛型以C++模板
- 如何使用C++编译.java文件
- 在机器上运行时,编译的源代码(C++、Java 等)涉及哪些安全问题
- 使用 Java 1.5 编译节俭生成的类时出错
- 从 Java 编译 c++ 文件