#includeint main() { int a = 5; int b = 0; b = (a > 5 ? 1 : 10); //是条件 *** 作符,而且是个三目 *** 作符 //(a > 5 ? 1 : 0)其中"a > 5"是表达式1,"1"是表达式2,"10"是表达式3 //如果表达式1满足,那么就执行表达式2, //若表达式1不满足,那么就执行表达式3 printf("%dn", b);//结果是10 int c = (a = a + 6, b = a - b, a + b); //这个是逗号表达式,特点是:必须先从左向右依次计算, //然后整个表达式的结果是最后一个表达式的结果。 printf("%dn", c);//结果是12 return 0; }
#includestruct book { //下面的 name id price 叫作结构体变量里的成员 char name[20];//不在这里赋值, char id[20];//这里只放该结构体的成员 int price; };//注意!这里必须要有英文分号 int main() { //像int,flaot,char,double,short,long //这些都叫作结构体。 //我们也可以用struct,创建一个新的结构体 //它可以定义一种新的结构体类型。 //如,struct book{书名;书号;定价} //因为它也是个结构体,所以和int使用一样 //如:int4 a = 10; //则:struct book a={}; struct book a = { "C语言","200106079",30 }; //赋初始值在这里赋,要注意该结构体每个成员的类型! //成员一旦多了,赋值的时候就要加上{}。 //这里"a"就变成了结构体变量了。 //结构体的打印输出,要一个成员一个成员的打印, //我觉得是因为每个成员有可能类型不同 printf("书名:%s ", a.name); //其中的a.name 用到了"." *** 作符, //"." *** 作符它可以找到结构体变量里的成员。 //%s是打印字符的。 printf("书号:%s ", a.id); printf("价格:%d n", a.price); //注意结构体变量里的成员类型 //还可以建立指针变量 struct book* pa = &a; //取地址&a,然后把地址放到指针pa里 //"*"说明pa是个指针, //而struct book,说明pa所指向的a的类型是struct book. //那么打印输出就可以用指针变量来代替结构体变量 printf("书名:%s ", (*pa).name ); printf("书号:%s ", (*pa).id);//因为*pa=a printf("价格:%d n", (*pa).price); //除了"." *** 作符可以找到结构体变量里的成员外, //还可以用指针的方式用"->"指向结构体变量里的成员。 printf("书名:%s ", pa->name); printf("书号:%s ", pa->id); printf("价格:%d n", pa->price); //在这里"pa"就是结构体指针,指针是有指向的所以能用-> //而"*pa"就是对"pa"进行解引用,所以 *pa=a return 0; }
整型提升
#includeint main() { char a = 3;//00000011 char b = 127;//01111111 char c = a + b; //10000010(若结果超出8位那就会截断), //这是有符号位补码,再变成原码 //然后有符号位的,按照符号位进行提升。 //就是符号位是几,就往高位加几,加够32位。 printf("%dn", c); //这里打印输出是%d整型(占4个字节即32个位), //而c是char类型(占1个字节即8个位,char是有符号位的) //所以需要进行整型提升。 //整型提升: //1.有符号位的,按照符号位进行提升。 // 就是符号位是几,就往高位加几,加够32位。 //2.无符号位的,就往高位加0,加够32位。 return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)