C语言的基础表达

发现记忆力越来越差,所以干脆搞这么一个东西,就是把C语言的最常用的语法汇编在一起,不断完善。这样以后只要经常把这个回顾一下就可以了。不然去翻书太多了。。。

装载这边文章的,学习一下 C语言的基础表达

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

#define PI 3.1415926
#define LIMIT 20
#define Area 1000

struct employee_data
{
	int a;
};

//一个负数右移31位后会变成 0xffffffff,一个正数右移31位则为 0x00000000  
//0xffffffff ^ a + a = - 1  
//因为 1011 ^ 1111 = 0100 异或1111其实是把a的0和1进行了颠倒。 
int abs(int x)  
{  
	return (x ^ (x >> 31)) - (x >> 31);  
}  

int getdata(struct employee_data e)  
{  
	return e.a;  
}  
int getdata_add(struct employee_data *e)  
{  
	return e->a;  
}

int main(void)
{
	//引用
	printf("%d\n",Area);

	//字符
	char c;
	c = 'A';
	int age;
	char first,end;
	printf("%c\n",c);
	printf("%3c\n",c);
	printf("%3c\n",'A');
	//scanf("%d",&age);
	//printf("%d\n",age);
	//scanf("%c",&first);
	//printf("%c\n",first);

	char *p1;
	p1 = &c;
	printf("%c%d%c\n",*p1,*p1+1,*p1+2); //输出 A 66 C ,这是寻址
	//printf("%c",'\a');//响铃  
	//char d=getchar();//putchar()  
	//printf("%c\n",d); 
	const int p_sea = 20;
	//p_sea = 30;//会报错,向只读变量赋值

	float x,y;
	x = 2.0;
	y = 3.0;
	printf("%f\n",x*y);
	printf("%f\n",PI);
	double d1 = 1.123456789;
	printf("%f\n",d1);


	int i =1,sum = 0;
	while (i<7){
		sum = sum+i;
		i++;
	}
	printf("%d\n",sum);

	int sz[] = {23,15,78};
	sz[1] = 2;
	printf("%d,%d\n",sz[1],sz[0]);

	//求数组长度
	int count =sizeof(sz)/sizeof(int);
	printf("%d\n",count);

	typedef int myint;
	myint i1 = 9;
	printf("%d\n",i1);
	printf("%d\n",sizeof(i1)); //输出4 int是4位

	//指针和数组关系
	int sz1[4] = {40,82,67,11};
	int *p;
	p = sz1;
	printf("*p %d\n",*p);  //40
	printf("*p+1 %d\n",*p+1);  //41  这里是在变量的基础上+1的
	printf("*p+2 %d\n",*p+2);  //42

	printf("*p %d\n",*p);  //40
	printf("*(p+1) %d\n",*(p+1));  //82  这里是在内存地址的基础上+1的
	printf("*(p+2) %d\n",*(p+2));  //67

	struct card{
		int pips;
		char suit;
	}c1,c2;
	c1.pips = 3;
	c1.suit = '5';
	c2 = c1;
	printf("struct c2.pips: %d\n",c2.pips);  //输出3,结构是可以互相赋值的


	typedef struct{
		int re;
		int im;
	}complex;
	complex as,ac[2];
	ac[0].re = 1;
	ac[1].re = 2;
	printf("struct ac[0].re: %d\n",ac[0].re); 
	printf("struct ac[1].re: %d\n",ac[1].re); 
	printf("struct ac[0].re: %d\n",ac[0].re); 


	struct student{
		char *last_name;
		int student_id;
		char grade;
		int a;
	};

	struct student tmp;
	tmp.last_name = "Canada";
	tmp.grade = 'A';
	tmp.student_id = 122;
	tmp.a = 0;
	printf("struct tmp.last_name: %s\n",tmp.last_name);

	struct employee_data e1;  
	e1.a=12;  
	int e11=getdata(e1);  
	printf("struct e11: %d\n",e11);  

	int e12=getdata_add(&e1);  //取这个函数,然后要传入一个*e,实际上忽略了*,直接传入&e1,这是方法
	printf("struct e12: %d\n",e12);  

	//与或非
	int y1 = 1;
	int y2 = 3;
	int y3 = y1&y2;
	printf("y3 &:%d\n",y3);
	printf("-9 >> 31:%d\n",abs(-5));  //绝对值


	#undef __FD_SETSIZE
	#define __FD_SETSIZE 1024
	printf("#define: %d\n",__FD_SETSIZE);



	system("pause");
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值