-
1.整数可以被赋予实数。 实数不能分配给整数变量。 在不损失准确性的情况下尽可能保持分配兼容性。
2. 字符串是字符'\0'为了结束。 当 *p 遇到第一个时'\0'(其 ASCII 值为 0),则为 false。 此时,while(*p) 跳出循环。
-
首先确定 a>b 是否为真。
a=1,b=2,ab 为 false,值为 0。
只要一个表达式的值为0,则操作结果为0,后续表达式不再继续。 因此,不再执行以下 ++c,c 的值仍为 3。
选择第二个。
-
c. a=7+b,b++,a+7
当没有 [;结束。
赋值本身没有问题,可以理解为a = (7+b,b++,a+7)是括号内的逗号表达式,结果按顺序计算,取最后一个值。 也就是说,a = a+7。
d. a=7+b,c=a+7;
结果测试没有问题。
e a=7+b++=a+7;
第一个赋值运算符是从右到左,例如 a = b = c;这句话首先将 c 的值分配给 b,然后将 b 的值分配给 a。 (但是,强烈建议不要进行此分配)。
这里 7+b+++中的 7+b++=a+7 不能作为左值使用,即不能赋值,会有问题。
-
第一句话 a+=(a+=3)+(a+=4)。
先执行两个括号,a 变成 7,然后 () 等价于 7(这就是它的执行方式),变成 a+=7+7---a=7+7+7=21
第234句与第一句相同。
在第五句话中,两个括号被执行,a 变成 8,() 等价于 8(这就是它的执行方式),变成 a+=8+8++-a=8+8+8 和 ++=25
-
下面我详细讲一个,a+=(a+=3)+(a+=4),先看(a+=3)+(a+=4),a=0,在(a+=3)之后,a=3,这个公式是3,再看a+=4,运算后a=7,这个公式是7,就是a+=3+7,所以a=10+7,所以a=17。 其余的都是相同的方法。
我想你明白了,对吧?
-
检查三个知识点:
1.逗号表达式的值是逗号右边的值,例如a=(b,c),那么a=c本身可以用作右值。
3.括号更改为 0 0(忽略此)。
a=(b=(c=2,d=3))关键在于逗号部分,根据知识点1,b=3知识点2 a=3
-
c=2, d=3) 逗号取最后一个,返回 3,依此类推,a = 3
-
像 x=y 这样的表达式称为赋值表达式,它有两个主要用途:
返回一个值,通常为左值,该值称为将 x 赋值给 y 的表达式的值,称为表达式的 ***。
重写 operator= 运算符以尽可能多地反映这两个函数。 如果仅在重写的函数中执行赋值操作,并且不返回任何值,则仅反映角色 2,而不反映角色 1。 这样,被覆盖的运算符将无法用作子表达式,例如,连续赋值 x=y=z 将是不可能的。
-
1.具有 CONST 的函数只能由 CONSULT checkedptr 对象调用,因为 CHECKEDPTR 对象是 const,因此返回的 t 引用只能是 const。 所以从表面上看,还有两个常量,但实际上它只是常量函数和非常量函数的区别。
2. checkedptr ret(*this);是通过调用 Copy 构造函数创建 CheckedPTR RET 类型的对象。 它的参数是对当前对象的 this 指针的取消引用。
3.定义运算符的目的是以便您可以用与基本指针相同的语法编写运算符。 例如,如果您有一个 checkedpttr 对象 a,则可以编写 *a 来获取它指向的元素。
4.这个类是用来制作一个数组的,但是C++自带的数组没有边界检查,这个类可以帮助你做一些安全检查。 所有运算符重载都经过精心设计,以便您可以像操作指针一样操作 checkedpttr 对象。
指针可以加减,类的对象也可以。
5.这只是C++的一小部分,我不知道有哪本书会专门讨论这个问题。 但是任何C++预言的基础都会被说出来。 你需要关注的关键词是面向对象的,使用 const,运算符重载。
int a,b;
a=5; b=2;*第一行* b 被指定为 2b=a; *第二行* 计算等号的右边,即把 a 的值 5 赋给 b,此时 b 等于 5,a 的值不变或 5 >>>More