C/C++面试题的作业练习入门
10月30日第四次作业练习
06.操作符优先级对运算符有什么影响?
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符。
运算符优先级:在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
算术运算符:+、-、* 、/、%、++、–
关系运算符:==、!=、>、<、>=、<=
逻辑运算符:&&、||、!
位运算符:P、Q、P&Q、P|Q、P^Q
赋值运算符:=、+=、-=、*=、/=、%=、<<=、>=、&=、|=、^=
杂项运算符:sizeof、Condition?X:Y、,.(点)和->(箭头、Cast、&
07.逻辑操作与其他操作的关系?
C++提供3种逻辑运算符:
(1) && 逻辑与(相当于其他语言中的AND)
(2) || 逻辑或(相当于其他语言中的OR)
(3) !逻辑非(相当于其他语言中的NOT)
在一个逻辑表达式中如果包含多个逻辑运算符,按以下的优先次序:
(1) !(非)→ &&(与)→ ?(或),即“!”为三者中最高的。
(2) 逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。
08.自增自减前操作与后操作的区别?
在c/c++中,自增(++)自减(–)操作符为数据对象加1和减1操作提供了一种方便简洁的实现方式。他们都有前置和后置两种形式
前自增自减操作的优先级大于赋值运算符(=),
后自增自减操作的优先级小于赋值运算符,
后自增自减操作后表达式的值不会发生改变。
09.指针自增与自减有什么不同?
变量的自增自减是改变变量的值,指针的自增自减是改变指针的指向地址。
当指针、自增(++)或者自减(–)运算符,以及*这三个运算符在同一个语句时,要注意++的作用点在哪里,
10.什么是左值和右值?
变量是左值,可以在赋值语句的左边;
数字字面值是右值,不能被赋值。
11.什么是变量?
变量是一段有名字的连续存储空间。
在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。可以自己定义。
12.变量有哪几种初始化方式?
2种:直接初始化;复制初始化。直接初始化更加灵活而且执行效率更高。
13.变量默认初始化有什么规则?
定义没有初始化式的变量时,系统有时候会帮我们初始化变量。
系统如何初始化取决于变量的类型以及变量定义的位置。
1、内置类型变量是否自动初始化取决于变量定义的位置。函数体外定义的变量初始成0;函数体内定义的变量不进行自动初始化。除了用作赋值操作的左操作数,其他任何使用未初始化变量的行为都是未定义的。
2、类类型变量在定义时,如果没有提供初始化式,则会自动调用默认构造函数进行初始化(不论变量在哪里定义)。如果某类型没有默认构造函数,则定义该类型对象时必须提供显示初始化式。
3、对于动态分配的单个对象,可使用直接初始化的语法规则在定义时显示初始化。如果不提供显示初始化式,动态创建的对象与在函数内部定义的变量初始化方式相同。

本文深入解析C/C++的运算符优先级、逻辑操作、自增自减操作、指针操作、左值与右值等核心概念,以及变量的初始化规则,适合准备面试的程序员阅读。

386

被折叠的 条评论
为什么被折叠?



