学习c语言时对一些疑问的测试
#include<stdio.h>
#include<string.h>
int main(){
/*              1               */
//	int a[3][3]={6,1,2,3,4,5};
//	int *p=&a[0][0];
//	printf("%d\n",&a[0][0]);
//	printf("%d\n",&a[0][1]);
//	printf("%d\n",&a[1][0]);
//	printf("%d\n",*p);
//	printf("%d\n",(a+1));
//	printf("%d\n",(*a)+1);
//	printf("aaa%d\n",a[3][1]);	
//	printf("%d\n",a[2][1]); 
//	int a[3][3]={1,2,3,4,5,6,7};
//	printf("%d\n",a[0][1]);	
//	printf("%d\n",a[0][2]);	
//	printf("%d\n",a[0][4]);	   // 列索引超过2后, 同样往后遍历, 这里输出为5 
/*  列索引一般不会越界,超过列数后,往下一排继续遍历                           */
	
	
/*              2               */
//	int a=4,b=3,c,d=9;
//	c = 1||0&&0;
//	printf("%d\n",c);
//	printf("d=%d\n",d);
/*              && 的优先级大于 ||               */
	
/*              3               */
//	char arr1[]="abcdef";
//	char arr2[4]="abcdef";
//	char arr3[]={"abcdef"};
//	char *arr4 = "abcdef";
//	char *arr5[] = {
//		"aa",
//		"bb",
//		"cc"
//	};
//	printf("%s\n",arr1); 
//	printf("a=%c\n",arr2[2]); 
//	printf("%s\n",arr3); 
//	printf("%c\n",arr4[1]); 
//	printf("%s",arr5[1]);
/*              上面这些数组的定义都是可行的               */
	
/*              4               */
//	char *a = "abc",b[50]="xyzsdf";
//	strcpy(b+1,a);
//	printf("%s",b);    //a的\0也会替代b中的's'字符, 因此输出到\0为止 
//	int i;
//	for(i=0;i<=6;i++){
//		printf("%c",b[i]);
//	}
/*
	1. 注意字符串复制会复制\0, 而%s遍历到\0为止, 不管后面还有无字符
	2. 复制并不是全覆盖, 注意strcpy(b+1,a) 
*/
/*              5               */
//#define f(z) z*z
//#define f(z) (z)*(z)
//printf("ddd=%d\n", f(6+6));
/* 宏定义函数, 注意后面运算没加括号时, 实参传过去后再做运算 */
	
	
/*              6               */
//float a=1.6;
//int b;
//b= (int)(a);
//printf("%d",b);
/*强制转换类型不会四舍五入*/
	
/*              7               */
//switch (3){
//	default: printf("this is default\n");
//	case 1: printf("this is 1\n");
//	case 2: printf("this is 2\n");
//}
//printf("-----------\n");
//switch (3){
//	case 1: printf("this is 1\n");
//	case 2: printf("this is 2\n");
//	default: printf("this is default\n");
//}
//printf("-----------\n");
//switch (1){
//	case 1: printf("this is 1\n");
//	case 2: printf("this is 2\n");
//	default: printf("this is default\n");
//}
//printf("-----------\n");
//switch (1){
//	default: printf("this is default\n");
//	case 1: printf("this is 1\n");
//	case 2: printf("this is 2\n");
//}
/*
	default放的位置不同, 执行顺序有所不同
	大概执行机制为:
	先将括号与case后字符做比对,  若无匹配, 则执行default, 并且从上至下执行
	若有匹配, 则从匹配行开始从上至下执行(包括default).
	以上两种情况都为未加break. 
*/ 
/*              8               */
//struct aa
//{  double r2;
//	int r1;
//	float r3;
//	union uu{ 
//		char u1[5];
//		long u2[2];
//	}ua;
//}maya;
//
//printf("%d",sizeof(struct aa));
/*未解决的问题*/
	
	
/*              9               */
//	int a=2,c=5;
//	printf("a=%%d,b=%%d\n",a,c);
//	printf("a=\%d,b=\%d\n",a,c);
		
/* c语言中, 想要输出'%', 就在前面外加一个'%' */
	 
/* 10 */
//	int a[] = {100,1,70,10,0,5}, *p=a;
//	printf("%d",*p+=3);
/*指针符*的优先级大于+=*/
	
	
/*              11               */
//int c[]={5,4,3,2,1,0}, *ptr1, *ptr2;
//ptr1 = c;
//ptr2=&c[5];
//
//printf("%d\n", ptr1);
//printf("%d\n", ptr2);
//printf("%d\n", ptr2-ptr1);
/*int数据类型占用4个字节, ptr2-ptr1应该为20, 结果为5*/
/*未解决的问题*/
/* 12 */
//char a[20],b[20],c[20],d[20];
//scanf("%s%s", a, b);
//gets(c);
//printf("%so\n",a);
//printf("%s\n",b);
//printf("%s\n",c);
//scanf("%s", d);
//printf("%saaa",d);
/* 通过scanf("%s")这样的方式给字符串赋值, 字符串不能接收空格字符 */
/* 13 */
//printf("%d\n", sizeof('A'+10+1.2));
//printf("%d\n",sizeof('1'+1));
//printf("%d\n",'1'+1);
/* 运算时的转换规则: char<short<int<unsigned<long<double */
/* 14 */
//char teststr1[]="abcdef", teststr2[]="af";
//printf("aa%daa", strcmp(teststr1, teststr2));
/* 
	strcmp(str1,str2)匹配字符串, str1大于str2时返回值大于0, 否则返回值小于0, 两者完全相等返回0
	依次逐个比较字符的ascii码. 
*/
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	return 0;
	
	
	
	
	
	
	
	
	
	
	
	
} 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号