Data types,Operators,Expressions

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] int16-32768~32767 即 -2^15~(2^15-1)
unsigned int160~65535 即 0~(2^16-1)
[signed] short [int]16-32768~32676 即-2^15~(2^15-1)
unsigned short [int]160~65535 即 0~(2^16-1)
long [int]32-2147483648~2147483647 即 -2^31~(2^31-1)
unsigned long [int)320~4294967295 即 0~(2^32-1)
浮点型数据(第46页)
类型比特(位)数有效数字取值范围
float(单精度)326~7-3.4×10^-38~3.4×10^38(精度为6~7位)
double(双精度)6415~16-1.7×10^-308~1.7×10^308(精度为15~16位)
long double(长双精度)12818~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
\ddd1到3位八进制数所代表的字符
\xhh1到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页)
ab!a!ba&&ba||b
非0非00011
非000101
0非01001
001100

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,6
printf("%d %d\n",(-45)%7,(-45)/7); //-3,-6 
printf("%d %d\n",45%(-7),45/(-7));  //3,-6
printf("%d %d\n",(-45)%(-7),(-45)/(-7));  //-3,6
return 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 97
b) x is 98
c) x is 99
d) Run time error
View Answer
Answer: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版本过低

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值