有关i++问题,和一些另外的易错点

  • 对于合法常量:以反斜杠开头的为转义字符才行,"\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
  1. 使用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()覆盖值就是上下来俩图的对比
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值