PTA——选择题(难)

考点:1.符号优先级:赋值运算优先于逗号运算,2.逗号运算:符逗号表达式中用逗号分开的表达式分别求值,以最后一个表达式的值作为整个表达式的值。

先进行括号内的运算,赋值优先于逗号,2*3赋值给a,a=6,然后逗号运算,取a*5,a=30;

然后赋值给i,所以i等于30. (选d是因为看成问a的值,a经过最后一次逗号运算值是36)。

考点:补码

当时写的时候还用devc运行了下(俺选的b)。是没有耐心等到程序运行结束,把long num换成char测试下就知道选c。 

计算机中的有符号数有三种表示方法,即原码反码和补码。符号位都是用0表示“正”,用1表示“负”

比如说在字长为8位的系统中 第一位就是符号位,其余7位就是数字位,

 就是说一个正数加着加着可能就变成负数了。所以这个程序并不是无限运行的。

考点:宏定义

宏定义是指用一个宏名(名字)来代表一个字符串。宏定义的功能是在编译预处理时,对程序中所有出现的“宏名”都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。

A:不能说N的值是100 N只是个标识符,没有值的意义

C:这不是赋值操作

D:替换是在编译时做的,不是在运行时。

8>6为1,1>3为0.

 

 \开头表示这一个八进制转义序列,

 

 所以s表示的是一个字符*。

一共3处错但是我认为void 和return不能一起出现.....

正解:return0是针对int main的,可以用void main()然后不加return来替换 

而main()里面去的void是指main函数里没有参数,这是常见用法,也可以直接不加void同样是没有参数,大多用这两者,如果main()加参数,则是int main(int argc, char * argv[]);
其中argc为命令行参数的个数,包括可执行文件名。
argv为一个字符串数组,共计有argc个元素,依次为命令行输入的各个参数。其中argv[0]为执行的文件名。

i=2一开始就进行条件判断,i==0是否成立,显然不成立,故跳出循环,故循环0次。没有i输出 。

所谓的难还是基础概念不清晰。。多看概念吧兄弟萌~~

猜你喜欢

转载自blog.csdn.net/qq_62795094/article/details/121877241