#include <stdio.h>
int print() //函数的定义:函数功能的实现
{
printf("1234\n");
return0;
}
//main函数:主函数,是程序的入口函数
int main()
{
/*
//调用函数:是为了执行函数内的代码段
print(); //函数的调用
*/
//格式化打印 print format
printf("hello c!\n");
printf("%d\n", __STDC__);//判断编译器是否遵循C标准,值为1表示遵循,为0表示不遵循
return0;
}
#include <stdio.h>
//sizeof运算符
int sizeof_opr()
{
printf("size 1 = %lu\n",sizeof(1));
printf("size char c = %lu\n",sizeof('c'));//'c'在作为sizeof的运算数时,是取出它的ascii码的值来进行运算的,已经被隐式类型转换为int类型了
char cc ='c';
printf("size cc = %lu\n",sizeof(cc)); //1
int x;
printf("size x = %lu\n",sizeof(x));
printf("size x = %lu\n",sizeof x);
printf("size x = %lu\n",sizeof(int));
//printf("size x = %lu\n", sizeof int); //错误形式
//sizeof的结果是在编译时已经确定下来了,在运行时才会进行的++运算是不会进行的
printf("== size: %lu\n",sizeof(x++ + ++x));
double dy =1.0;
printf("== size: %lu\n",sizeof(x++ + ++dy));
printf("x = %d\n", x);
float ff;
printf("size ff = %lu\n",sizeof(ff));
double dd;
printf("size dd = %lu\n",sizeof(dd));
return0;
}
//算术运算符
int alog_opr()
{
int a =1, b = 2;
int c = a + b * a - b;//1+2*1-2
printf("c = %d\n", c);
double f1 =3, f2;
f2 = f1 /10;
printf("f2 = %.3lf\n", f2);//%.3lf表示打印的数值保留小数点后的三位
a =1;
//f2 = f1 / a; //f2 = f1 / (double)a;
f2 = f1 / (double)a;//(类型) 强制类型转换符,是将现在a的类型强制转换为double类型
//隐式类型转换的原则:将类型范围窄的转为类型范围宽的
a = f1 / a; //a = (int)(f1 / (double)a) 导致的结果是精度的丢失
//错误认识:a = (int)f1 / a;
a =1;
//f1 % a; //%只能用在整数类型上
printf("result = %d\n", (int)f1 % a);
printf("result = %d\n", -a % -10); //%的结果是由%前的表达式的正负决定的
return0;
}
//赋值运算符
int assign_opr()
{
//赋值运算符:首先寻址,找到x所在的内存空间,将数值1存放进x所在的这四个字节的空间
//赋值操作是将数值放到该变量所在的内存空间中
int a, b =2, c;
c = a = b; //c = (a = b);
return0;
}
//自增运算符
int increment_opr()
{
int c =1;
//自增 a++ ++a
c = c +1;
c += 1;//c = c + 1;
//c = c++; //在同一个表达式中,既使用一个变量的值,又改变这个变量的值,是不被推荐使用的
int d = c++;
printf("c = %d, d = %d\n", c, d);//4 3
d = ++c;
printf("c = %d, d = %d\n", c, d);//5 5
c =1;
//d = c++ + ++c; //d = 1 + 3
//printf("c = %d, d = %d\n", c, d); //c=3 d=4
d = ++c;
d += c++; //d = d + c++;
printf("c = %d, d = %d\n", c, d);//c=3 d=4
return0;
}
//关系运算符
int relation_opr()
{
//C中,关系运算得到的结果只有两种,真和假。结果为0就是假,不为0就为真。通常,假用0去表示,真用1表示
int a =13, b = 13;
int result = a >= b;
printf("result = %d\n", result);
printf("ret = %d\n", a != b);
return0;
}
//逻辑运算符
int logic_opr()
{
int a =10, b = 13;
int result = (a ==0) || (b != 0);
printf("result = %d\n", result);
printf("result = %d\n", !!!result);
return0;
}
//逗号运算符
int comma_opr()
{
int a =3, b = 4; //,不是逗号运算符,是在声明中用来分隔变量的
int result = (a++, b++, b++);
printf("comma: result = %d\n", result);
return0;
}
//条件运算符
int condition_opr()
{
//打印两个变量中比较大的
int a =3, b = 4;
int c = a > b ? a : b;
printf("max = %d\n", c);
//打印三个变量中比较大的
int d =6;
int max = c > d ? c : d;
printf("max = %d\n", max);
//可读性太差,不建议此种方式
//max = (a > b ? a : b) > d ? (a > b ? a : b) : d;
return0;
}
int main()
{
printf("hello world!\n");
printf("%s\n","hello world!");
int m =10;
char ccc ='0';
printf("m + ccc = %d\n", m + ccc);//混合类型运算,编译器会进行隐式类型转换,m+(int)ccc
sizeof_opr();
printf("----------------\n");
alog_opr();
printf("----------------\n");
assign_opr();
printf("----------------\n");
increment_opr();
printf("----------------\n");
relation_opr();
printf("----------------\n");
logic_opr();
printf("----------------\n");
comma_opr();
printf("----------------\n");
condition_opr();
return0;
}
#include <stdio.h>
int main()
{
char a ='A'; //a所在的内存中存放的是'A'对应的ASCII码的二进制数
a =65;
a = 10;//a = '\n';
//int b;
//b = 20;
//char c = '男';
//char arr[] = "男";
char arr[] ="hello world";
printf("size c = %lu\n",sizeof(arr));
long/*int*/ li;
printf("size long = %lu\n",sizeof(long));
return0;
}