解决方案
3
19.初始化x为整形,前半部分强制转换成float型,2/5=0.4,后半部分x是整型,3/5=0,相加就是0.4。
7.&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为非零时,整个运算结果才为1,否则,只要有一方为0,则结果为0。这里5&5=1,3&&4=1,相减等于0.
7.&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为非零时,整个运算结果才为1,否则,只要有一方为0,则结果为0。这里5&5=1,3&&4=1,相减等于0.
1
+1
5
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
6
运算符的优先级的问题。
5 & 5 – 3 && 4 等同于
(5 & (5 – 3)) && 4 =
(5 & 2) && 4 =
0 && 4 =
0
5 & 5 是等于 5 的。
&& 和 & 的算法是不一致的。
5 & 5 – 3 && 4 等同于
(5 & (5 – 3)) && 4 =
(5 & 2) && 4 =
0 && 4 =
0
5 & 5 是等于 5 的。
&& 和 & 的算法是不一致的。
2
第二题考算操作符的优先级。
相等于(5&(5-3))&&4
相等于(5&(5-3))&&4
3
仅供参考:
//C++ Operators // Operators specify an evaluation to be performed on one of the following: // One operand (unary operator) // Two operands (binary operator) // Three operands (ternary operator) // The C++ language includes all C operators and adds several new operators. // Table 1.1 lists the operators available in Microsoft C++. // Operators follow a strict precedence which defines the evaluation order of //expressions containing these operators. Operators associate with either the //expression on their left or the expression on their right; this is called //“associativity.” Operators in the same group have equal precedence and are //evaluated left to right in an expression unless explicitly forced by a pair of //parentheses, ( ). // Table 1.1 shows the precedence and associativity of C++ operators // (from highest to lowest precedence). // //Table 1.1 C++ Operator Precedence and Associativity // The highest precedence level is at the top of the table. //+--+--+--+ //| Operator | Name or Meaning | Associativity | //+--+--+--+ //| :: | Scope resolution | None | //| :: | Global | None | //| [ ] | Array subscript | Left to right | //| ( ) | Function call | Left to right | //| ( ) | Conversion | None | //| . | Member selection (object) | Left to right | //| -> | Member selection (pointer) | Left to right | //| ++ | Postfix increment | None | //| -- | Postfix decrement | None | //| new | Allocate object | None | //| delete | Deallocate object | None | //| delete[ ] | Deallocate object | None | //| ++ | Prefix increment | None | //| -- | Prefix decrement | None | //| * | Dereference | None | //| & | Address-of | None | //| + | Unary plus | None | //| - | Arithmetic negation (unary) | None | //| ! | Logical NOT | None | //| ~ | Bitwise complement | None | //| sizeof | Size of object | None | //| sizeof ( ) | Size of type | None | //| typeid( ) | type name | None | //| (type) | Type cast (conversion) | Right to left | //| const_cast | Type cast (conversion) | None | //| dynamic_cast | Type cast (conversion) | None | //| reinterpret_cast | Type cast (conversion) | None | //| static_cast | Type cast (conversion) | None | //| .* | Apply pointer to class member (objects) | Left to right | //| ->* | Dereference pointer to class member | Left to right | //| * | Multiplication | Left to right | //| / | Division | Left to right | //| % | Remainder (modulus) | Left to right | //| + | Addition | Left to right | //| - | Subtraction | Left to right | //| << | Left shift | Left to right | //| >> | Right shift | Left to right | //| < | Less than | Left to right | //| > | Greater than | Left to right | //| <= | Less than or equal to | Left to right | //| >= | Greater than or equal to | Left to right | //| == | Equality | Left to right | //| != | Inequality | Left to right | //| & | Bitwise AND | Left to right | //| ^ | Bitwise exclusive OR | Left to right | //| | | Bitwise OR | Left to right | //| && | Logical AND | Left to right | //| || | Logical OR | Left to right | //| e1?e2:e3 | Conditional | Right to left | //| = | Assignment | Right to left | //| *= | Multiplication assignment | Right to left | //| /= | Division assignment | Right to left | //| %= | Modulus assignment | Right to left | //| += | Addition assignment | Right to left | //| -= | Subtraction assignment | Right to left | //| <<= | Left-shift assignment | Right to left | //| >>= | Right-shift assignment | Right to left | //| &= | Bitwise AND assignment | Right to left | //| |= | Bitwise inclusive OR assignment | Right to left | //| ^= | Bitwise exclusive OR assignment | Right to left | //| , | Comma | Left to right | //+--+--+--+