- 对于合法常量:以反斜杠开头的为转义字符才行,"\a"就是。
- 对于十六进制、八进制的转义字符的位数和格式:
八进制:’\0dd’(0~7)在这8个数都可以取值也可以‘\0d’,‘\123’也对
十六进制:’\xdd’( 0~9 , a~f)在这出现的值都可以取值,f可以取值,也可以‘\xd’ - 对于e:0.1e+6就是合法的常量。E后面必须有整数(8.0E0.5就不行,但是 .0E0就可以,不管是0还是多少都可以只要是整数,一个数即可,E前面必须有数。)
- 在C语言中没有逻辑类型。有逻辑值。一般IF语句他的表达式就是合法的数值即可。
- 在一些题目中,要区分0x1233与’\x12’他们的区别0x后面可以任意值,但是转义字符却不行。
就是D选项,它是16进制的数但不是转义字符。可以后面4个数。
下图中:A选项是错误的,因为对于\要不然为转义字符,要不俩个\要不"就这几种选择。
B选项,abc三个字符应该用“” 括起来
C无双引号
下图:‘0’ ASCII码为48,’\0’的ASCII码为0。对于字符来说就是‘’才是,C选项的0只是数字0,结果49。
下图:对于二维数组,第一维长度可以不给。但是第二维长度必须有。
对于字符串比较用比较函数。
#include<stdio.h>
int main()
{
int a;
float b;
scanf("%2d%f",&a,&b);
printf("%d,%f\n",a,b);
}
输入:876 543.0
输出:87 6.0
*********************************
*********************************
#include<stdio.h>
int main()
{
int a;
int b;
scanf("%d%2d",&a,&b);
printf("%d,%d\n",a,b);
}
输入:23 456
输出:23 45
*****************************
*********************************
#include<stdio.h>
int main()
{
int a;
int b;
scanf("%2d%2d",&a,&b);
printf("%d,%d\n",a,b);
}
输入:345 678
输出:34 5
*******************************
***********************************
#include<stdio.h>
int main()
{
int a=12;
double y=3.1413593;
printf("%d,%8.6f\n",a,y);
}12 3.141593小数点也算。
***********************************
#include<stdio.h>
int main()
{
int a=12;
double y=3.1413593;
char c="ss";//这一句是错误的。
printf("%d,%8.6f\n",a,y);
}//12 3.141359
总宽度为8包括小数点但小数点后为6位。
***********************************
****************************************
- 合法的赋值语句:
- 左值不可以表达式、也不可以为常量,对于%符号俩边必须为整形。
- 例如:x=n%2.7;x+n=i;x=5=4+1;都不可以。但是(int a=2,b=3;a=2+1;这个可以,
- 因为a为变量可以赋值,但是 #define a 3 int b=-3;a=b+2;就不可以,因为a为常量)
x=y==2;这个不可以。
*****************************************************************************
*********************************************************************************
不管在哪里,n++就是取它的n值,不要+1;
#include<stdio.h>
int main()
{ int i=5;
if(i++%5==0)
printf("%d\n",i);
}
6
************************
#include<stdio.h>
int main()
{ int i=4;
if(i++%5==0)
printf("%d\n",i);
else printf("%d",1);
}
1
***************************
#include<stdio.h>
int fun(int a)
{
return a+1;
}
int main()
{ int i=4;
printf("%d\n",fun(i++));
}
5
这里i++只取了i并没有++,传的是4.
********************************************
#include<stdio.h>
int fun(int a)
{
return a+1;
}
int main()
{ int i=4;
printf("%d\n",fun(i++));
printf("%d\n",fun(++i));
}
5 7
********************************
#include<stdio.h>
int main()
{ int i=4;
if(i++%5==0)
printf("%d\n",1);
if(++i%6==0)
printf("%d\n",2);
}
2
******************************
#include<stdio.h>
int main()
{ int i=4,b;
b=i++%5+i;//+前面为4后面的i值为5
printf("%d\n",b);
} 9
- 使用strlen()算长度时,"\n123\"是5个,因为\n 是一个字符123 是三个字符 俩个\ 转义出 \为一个字符。在八进制、十六进制转移字符中,一个就是一个字符。‘\034’等等。
#include<stdio.h>
#define f(x) x*x*x
int main()
{
int a=3,s,t;
s=f(a+1);
t=f((a+1));
printf("%d,%d\n",s,t);
}10,64
***************************************
#include<stdio.h>
#define f(x) (a)-(a)
int main()
{
int a=2,b=3,c=5,d;
d=f(a+b)*c;
printf("%d\n",d);
}-8
*******************************
#include<stdio.h>
#define f(x) (x)-(x)
int main()
{
int a=2,b=3,c=5,d;
d=f(a+b)*c;
printf("%d\n",d);
}-20
注意它俩的#define f(x) (x)-(x)与#define f(x) (a)-(a)括号内的数不一样。
输出:123 456
输出:1,2,3,0,0,1,2,3,0,0
对于算完之后不是四舍五入,而是直接取整,就是1.
1245
题中给啥,就是啥,不要不满足就是default,因为题中没给default只要不是a==1有其他case也行,看题中来,主要是考察我们执行谁。选项:a
下俩图是对比的,一个有个返回值一个没有返回值。
下图选A
对于这个题。要看清a的范围,一定要看清。
对于这个题,要明确t的作用域,要知道第一开始定义t=0,他只是一开始,在后面并不影响,后面的值我们要看后面的计算,只要不是再回到定义处,那么就不会再为0.
知道在数组中是a+1,就是指向下一个元素,p=p->y就是指向下一个元素。
对于在程序中凡是以#开头的就是预处理行;他不能以分号结束;在程序编译时进行。#define MAX是合法的宏定义命令行。但不可以在程序中应用。
#include<iostream>
using namespace std;
#define MAR
int main()
{int a=2;
a=a*MAR;错误
cout<<a;
}就是错误的。
下图是fprintf()不覆盖,而fwrite()覆盖值就是上下来俩图的对比