运算符优先级顺口溜:
运算符优先级顺口溜:单算一笔,俺裸三服(才单算了一笔账,我就脱了三件衣服)
1单:单目运算符;!
2算:算数运算符;加、减、乘、除、取余
3一:移位运算符;左移、右移
4笔:比较运算符; 等于【==】、不等于【!=】 、关系运算符【< > <= >= 】
5俺:按位运算符;按位与(&),按位或(|)、按位非(~)、按位异或(^)
6裸:逻辑运算符;与【&&】 、或【||】、非【!】
7三:三目运算符;b ? x : y,先计算b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值
8服:赋值运算符。赋值运算符【= += -= *= /= %= >>= <<= &= |= ^=】
3.下面结果是什么? B
1.下面哪个不是C语言内置的数据类型? C
2.局部变量的作用域是什么? D
3.下面代码输出的结果是() B
牛客等代码题:OJ online Judge
4.字符串结束的标志: C
5.关于数组描述错误的是: B
6.下面程序的结果是: A
7.下面哪个不是转译字符: C
8.下面代码的结果是? C。随机值
C语言中哪个数组的创建是错误的: B 数组的容量不能是一个变量
关键字:
1.下面关于关键字说法正确的是: B
2.用在switch中的关键字不包括哪个? A switch不是循环语句
continue是用在循环里面的
3.下面哪个不是关键字? C
define不是关键字 是一个预处理指令
什么是右结合?
1.fun((exp1,exp2),(exp3,exp4,exp5))有几个实参? A
A. 2
B. 5
C. 1
D. 3
逗号表达式:
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。
逗号表达式的形式如下:
表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号 运算符的优先级别在所有运算符中最低。
2 . 关于按地址传递,下列说法错误的是: D
A. 当函数形参是数组名、指针类型时,函数调用的参数传递是按地址传递。
B. 按地址传递时,形参和实参共用同一存储空间。
C. 按地址传递时,形参的改变会影 响实参。
D. 形参数组和实参数组的长度必须一致。
官方解析:形参数组和实参数组的长度可以不同,因为按地址传递时是把实参首地址给了形参而不检查其长度。
请问经过表达式a = 5 ? 0 : 1的运算,变量a的最终值是? C
A 5
B 1
C 0
D true
解析:三元运算符优先于 = 赋值 所以 a = 5 ? 0 : 1 ---> a = ((5) ? 0 : 1 )
%-08d表示输出占8个空格的位置,并且左对齐
在下列运算符中,优先级最高的是() D
A、<=
B、*=
C、+
D、*
单算一笔、按逻三赋
结构体与UNION联合体 所占内存问题:
union的大小取决于所占空间最大的变量的大小 并且是倍数 int a32位占4字节,所以uni的大小就是4字节
struct的大小由于内存对齐问题,int a四个字节,char b虽然是1个字节 但是为了存取效率,char b也被分配了一块4字节的空间,所以整个结构体所占空间为8字节
4.存储模式--大端模式、小端模式 存储方式、补码。。。。
结构体:
D
A、15
B、16
C、18
D、20
官方解析:struct {
char type; ===>占一个字节
int num; ===>占四个字节,但考虑字节对齐,int num不会紧跟着type,对齐的最终结果是char type和int num共占8字节
char name[10]; ===>虽然数组个数是10个,占10个字节,但考虑字节对齐,最后回对齐到12字节,所以该结构体总占字节为8+12 = 20
} rec;
字符与数字比较
C
A、12ba56
B、6521
C、6
D、62
递归:
C
A、5
B、11
C、29
D、10
运算优先级
B
A、编译错误
B、i=0,j=7
C、i=0,j=0
D、其他几项都不对
A
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
解析: a<b<c 1<2<2 --> 1<2
指针
3.
C
A、8,7,8,7
B、7,8,7,8
C、8,7,7,8
D、7,8,8,7
解析:p和q的指针发生交换 但是a 和 b 的地址没有改变
4.
A
A、def def
B、abc def
C、abc d
D、d d
解析: q指针指向 p 说明 这两个指针指向同一个内存地址
输入p q p-->abc q-->def 因为二者指向同一个内存地址 所以内存先存储abc
后面def覆盖了abc printf输出时,读取的就是def 所以输出两个def
unsigned:
指针与二级指针
变量的初始化:
内存:
2.
对于32位系统,定义 int **a[3][4], 则变量a占有的内存空间为:_____ C
A、12
B、24
C、48
D、96
解析: 这是一个 指针数组 数组中的元素都是二级指针 所占内存因为是32位 4*3*4 = 48
函数:
项目问题: