`int main(){
int age, intSize;
float gift;
printf(“How old are you?\n”);
scanf(“ %d”, age);
if (age<18)
gift=5.00;
else
gift=10.00;
gift=(age<18) ? 5.00:10.00;
printf(“Your gift is $%.2f\n”,gift);
age ++;
printf(“In a year, you’ll be %d years old.\n”, age);
intSize=sizeof(int);
printf(“Integers take %d memory location.\n”,intSize);
return(0);
}
`
输出的时候,“ In a year, you’ll be 2147332097 years old. ” 这个数值不对,怎么解决呢?
操作空间
复合赋值
计数器变量:当特定事件发生时,它的值增加1。

输出为:

复合赋值运算符
lossCount=lossCount+1; 等同于 lossCount +=1;

- 复合赋值运算符的优先级很低,

强制类型转换(typecast)
格式: (dataType)value
int age; 把age转换成值为6.0的float (float)age;
练习
int main(){
int age;
float dogAge;
printf("How old are you?\n ");
scanf(" %d", &age);
dogAge = (float)age / 7.0;
printf("If you were a dog, you'd only be %.1f years old!\n", dogAge);
return(0);
}
关系运算符
在C语言中,对关系运算符进行求值时,总产生数值1或0。为真-1,为假-0。
a=(4<10); // (4<10) is true, so a 1 is put in a
b=(8==9); // (8==9) is false,so a 0 is put in b

- 关系运算符两侧数据类型相同
if
- 如果某事为真,就做一件事;否则,就做另外的事
格式:
if (condition){ block of one or more C statements;}
如:
if(age<18){
printf("You cannot vote yet\n"); yrs=18-age; printf("You can vote in %d years.\n",yrs);}
else
if (condition){
block of one or more C statements;
}
else{
block of one or more C statements;
}
逻辑运算符

if(age>=21){
if(age<=65){
printf("The age falls between 21 and 65.\n");
}
}
以上代码的写法不直观,并且逻辑变得有些复杂。运用逻辑运算符更清晰:
if((age>=21) && (age>=65)){
printf("The age falls between 21 and 65.\n");
}
- && 两边的条件必须都为真
- || 一边条件为真
- ! 将真或假的条件取反:即真变假,假变真
if(!(sales<3000)) 等同于 if(sales>=3000)
逻辑运算符把关系运算符连接起来
练习
int main(){
char name[25];
printf("What is your last name?\n");
scanf(" %s", name);
if ((name[0]>='P') && (name[0]<='S')){
printf("You must go to room 2432\n");
printf("for your tickets.\n");
}
else {
printf("You can get your tickets here.\n");
}
return(0);
}
条件运算符
- 唯一需要3个参数的C运算符;
- 格式:
relation ? trueStatement : falseStatement;(total <= 3850) ? (total *= 1.1) : (total *=1.0);解析:total<=3850是否成立?如果成立,就做第一件事;否则,就做第二件事。
- 几乎任何if-else语句都可以,写成条件语句。
- 条件运算符可以出现在if语句不能出现的地方。
递增++ 和 递减–
count++; ++count; count--; --count;前缀递增 后缀递增 前缀递减 后缀递减
- 前缀运算符和后缀运算符独立使用时,会产生相同的结果。
int i=2,j=5,n; (1) n=++i*j; (2) n=i++ *j;解析:(1)先执行 i+1,再执行 *j。 (2)先执行 i*j,再执行 i+1。
运算符sizeof()
用来查明存储任何类型的数据所占用的内存单元。如查明整型和浮点型占用的内存:
i=sizeof(int);
f=sizeof(float);
char name[]="George Paul";
int i=7;
printf("The size of i is %d\n", sizeof(i));
printf("The size of name is %d\n", sizeof(name));
输出为:
The size of i is 2
The size of name is 12