【c语言中的坑】c语言中的坑

声明:本帖记录我考试中出现的c语言错误。

1、取模运算操作数,必须是整型,浮点型不能作为操作数

例如:3.14%2 是错误的

2.在打印输出

	printf("%d",strlen("\TOP	65""));

     输出结果是7  问了老师之后才知道 只占用一个位置,并不是4个位置 \  一个 top 3个  一个  65一个  " 一个 一共七个长度 

3.当声明一个共用体变量时,系统分配给他的内存是成员中占用内存最大者所需的容量

4.c语言中基本的数据类型包括整型、实型、字符型

5.

#include<stdio.h>
void main(){

	char x [] = "language";
	char y [] = "IIngga";
	int i = 0;
	while(x[i]!=''&&y[i]!='')
	{
		if(x[i]==y[i])
			printf("%c",x[i++]);\ x[i]  和x[i++]的区别 主要在于 应该在判断完成后 进行i值的自增 否则的话 程序会进入死循环
		else
			i++;

	}

}

6.

int a,b,y,x;
	switch(pow(a,2)+pow(b,3))
	{
	case 1:case 3: y = a+b;break;
	case 0:case 5: y = a-b;


	}

error C2450: switch expression of type 'double' is illegal

编译报错,因为switch()中只能是整型 字符型和枚举类型。pow返回的是一个double类型的数据

7.若x是实型变量,表达式(x=10.0/4.0)的值是2.5

查了下百度百科。找到的解释,记录一下。

在程序运行过程中可以改变其值的实型量被称为实型变量,实型变量分为单精度(float),双精度(double)和长双精度(long double)型。

8.


	/*
		程序的理解:p = a+8 指针指向了下标为8的地方 也就是'9'的地方
		在执行p-3 首地址元素指针指向了'6'  所以程序最后输出的是 6789 0在这里的做的是一个结束标志

	**/

	char a [10] = {'1','2','3','4','5','6','7','8','9',0},*p;

	int i = 8;
	p = a+i;
	printf("%s
",p-3);

9.


	/*
	程序理解:定义了一个字符数组,和一个字符指针变量
	用字符指针变量指向了字符数组的第一个元素
	因此程序的执行的结果就是
	ABCD
	BCD
	CD
	D
	**/
	char s [] = "ABCD";
	
	char * p;
	for(p=s;p<s+4;p++)
		printf("%s
",p);
	

10.

#include<stdio.h>
void main(){
	
	/*
	  程序理解:++p 一直指向 直到指针指向e处 停止执行 因此程序输出的efg 
	  指针p 指向的是e的地址。因此 输出会包含 e
	**/
	char * p = "abcdefg";

	while(*(++p)!='e');

	printf("%s
",p);

}

说明:如果对此有疑问的欢迎 指正 谢谢! 联系qq 1137821448

原文地址:https://www.cnblogs.com/qxlxi/p/12860908.html