Data types,Operators,Expressions

2017-01-04 19:18:31来源:CSDN作者:Wayne_Mai人点击

Data types,Operators,Expressions


Open,free,share

以下笔记为广泛收集摘录所得,如果有侵犯之处,欢迎向我反馈,这种情况下将采取删除有关内容的措施


1,C99 standard guarantees uniqueness of 63 characters for internal names.

2,C99 standard guarantess uniqueness of 31_ characters for external names.

3, Variable names beginning with underscore is not encouraged.To avoid conflicts since library routines use such names.

4,All keywords in C are in LowerCase letters.

5,Variable name resolving (number of significant characters for uniqueness of variable) depends on Compiler and linker implementations.

6,Both %d and %i can be used as a format identifier for int data type.

7,%i和%d都是表示有符号十进制整数,但%i可以自动将输入的八进制或者十六进制转换为十进制而%d则不会进行转换。

8

整数类型的有关数据(第43页)
类型 比特(位)数 取值范围
[signed] int 16 -32768~32767 即 -2^15~(2^15-1)
unsigned int 16 0~65535 即 0~(2^16-1)
[signed] short [int] 16 -32768~32676 即-2^15~(2^15-1)
unsigned short [int] 16 0~65535 即 0~(2^16-1)
long [int] 32 -2147483648~2147483647 即 -2^31~(2^31-1)
unsigned long [int) 32 0~4294967295 即 0~(2^32-1)
浮点型数据(第46页)
类型 比特(位)数 有效数字 取值范围
float(单精度) 32 6~7 -3.4×10^-38~3.4×10^38(精度为6~7位)
double(双精度) 64 15~16 -1.7×10^-308~1.7×10^308(精度为15~16位)
long double(长双精度) 128 18~19 -1.2×10^-4932~1.2×10^4932
转义字符及其作用(第48页)
字符型式 含义 ASCII代码
/n 换行,将当前位置移到下行开头 10
/t 水平制表(跳到下一个Tab位置) 9
/b 退格,将当前位置移到前一列 8
/r 回车,将当前位置移到本行开头 13
/f 换页,将当前位置移到下页开头 12
// 代表一个反斜杠字符”/” 92
/’ 代表一个单引号(撇号)字符 39
/” 代表一个双引号字符 34
/ddd 1到3位八进制数所代表的字符
/xhh 1到2位十六进制数所代表的字符
printf格式字符(第81页)
格式字符 说明
d,i 以带符号的十进制开式输出整数(正数不输出负号)
o 以八进制无符号型式输出整数(不输出前导符o)
x,X 以十六进制无符号型式输出整数(不输出前导符ox),用x输出十六进制数的a~f时以小写形式输出。用X时,则以大写字母输出
u 以无符号十进制形式输出整数
c 以字符形式输出,只输出一个字符
s 输出字符串
f 以小数形式输出单、双精度数,隐含输出6位小数
e,E 以指数形式输出实数,用e时以“e”表示(如1.2e+02),用E时指数以“E”表示(如1.2E+02)
g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示
printf的附加格式说明字符(第81页)
字符 说明
l,L 用以长整型整数,可加在格式符d、o、x、u前面(比如说%Lf用于long double)
m(代表一个整数) 数据最小宽度
n(代表一个整数) 对实数,表示输出n位小数;对字符串,表示截取的字符个数
- 输出的数字或字符在域内向左靠
scanf格式字符(第83页)
格式字符 说明
d,i 用来输入有符号的十进制整数
u 用来输入无符号的十进制整数
o 用来输入无符号的八进制整数
x,X 用来输入无符号的十六进制整数(大小写作用相同)
c 用来输入单个字符
s 用来输入字符串,将字符串送入一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志’/0’作为最后一个字符
f 用来输入实数,可以用小数形式或指数形式输入
e,E,g,G 与f作用相同,e与f、g可以互相替换(大小写作用相同)
scanf的附加格式说明字符(第83页)
字符 说明
l 用于输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(用%lf或%le)
h 用于输入短整型数据(可用%hd,%ho,%hx)
域宽 指定输入数据所占宽度(列数),域宽应为正整数
* 表示本输入项在读入后不赋值给相应的变量
逻辑运算的真值表(第94页)
a b !a !b a&&b a||b
非0 非0 0 0 1 1
非0 0 0 1 0 1
0 非0 1 0 0 1
0 0 1 1 0 0

9,typedef and struct are used to define user-defined data types.

10,The %s along with the Sanfoundry is not read as a format modifier while new line character prints the new line.

1.      #include <stdio.h>2.      int main()3.      {4.          printf("C programming %s", "Class by/n%s Sanfoundry", "WOW");5.      }

11, format identifier 格式转换说明符

12,

/*************************************************************************> File Name: mod.c> Author: wayne> Created Time: Mon 02 Jan 2017 08:55:10 AM CST************************************************************************/#include<stdio.h>  int main()  {   //结果的正负与百分号前面的数字正负相同   printf("%d %d/n",45%7,45/7);   //3,6printf("%d %d/n",(-45)%7,(-45)/7); //-3,-6 printf("%d %d/n",45%(-7),45/(-7));  //3,-6printf("%d %d/n",(-45)%(-7),(-45)/(-7));  //-3,6return 0;  } 

13,int x = 5.3 % 2;->Compile time error

14, x > y ? printf("%d", z) : return z;->Compile time error; expected expression before ‘return’

15,

 #include <stdio.h>        void main()    {        float x = 0.1;            if (x == 0.1)                printf("Sanfoundry");            else                printf("Advanced C Classes");//print Advanced C Classes     }

16,In this case,the output will be a junk value.(printf按整型的方式读取了前4个字节)

 float x = 0.1; printf("%d, ", x);

17,

18,就高不就低原则:不同数据类型的数比较大小时会进行隐式转换,将小数据范围的数据转换成大数据范围进行比较;

19,负数的补码就是对反码加1,而正数不变,正数的原码反码补码是一样的

20,求负整数的补码,将其对应正数二进制表示所有位取反包括符号位0变1,1变0后加1

21,++运算符只能用于变量

22,
bitwise exclusive OR operator 【计】 按位”异”算符
bitwise operator 【计】 按位算符
bitwise AND operator 【计】 按位”与”算符

23,What is the output of this C code?

1.      #include <stdio.h>2.      void main()3.      {4.          int x = 97;5.          int y = sizeof(x++);6.          printf("x is %d", x);7.      }a) x is 97b) x is 98c) x is 99d) Run time errorView AnswerAnswer:a

另,形如sizeof(void)的使用并不合法,但使用printf输出将得到1.
24,三元操作符只是一个操作符而已,不能把操作的对象变成一条语句来看待,(?后添加return非法,然而getchar合法)
25,return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束;
26,同一条语句中,使用逗号表达式将导致后自增运算符生效,如int i=1;int a=(i++,i),得到a为2.
27,Answer:a
28,What is the value of i and j in the below code?

1. #include <stdio.h>
2. int x = 0;
3. int main()
4. {
5. int i = (f() + g()) || g();
6. int j = g() || (f() + g());
7. }
8. int f()
9. {
10. if (x == 0)
11. return x + 1;
12. else
13. return x - 1;
14. }
15. int g()
16. {
17. return x++;
18. }
19.

a)i value is 1 and j value is 1
b)i value is 0 and j value is 0
c)i value is 1 and j value is undefined
d)i and j value are undefined
View Answer
Answer:d(Linux下C99i,j均为1)
29,Floating point Exception:除0错误或glibc版本过低

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台