Home > Backend Development > C++ > Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C ?

Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C ?

Patricia Arquette
Release: 2024-11-28 18:44:11
Original
982 people have browsed it

Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C  ?

Can I Assume Equivalence Between (bool)true and (int)1 Across Compilers?

The question at hand revolves around whether the equality (bool)true == (int)1 holds true universally for C compilers. In other words, can one safely assume the interchangeability of these two expressions?

According to the provided response, the answer is a resounding "Yes". The casts themselves are superfluous because of integral promotion. Integral promotion dictates that bool values are automatically promoted to int, with true specifically being promoted to the integer value 1.

This behavior is detailed in the C standard's section 4.7 [conv.integral] / 4, which explicitly states that "If the source type is bool... true is converted to one."

Therefore, the expression true == 1 is essentially equivalent to 1 == 1, which evaluates to true regardless of the compiler being used.

The above is the detailed content of Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C ?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template