首页 > 代码库 > 【Xcode学C-2】常量、变量、scanf、printf以及各种运算符介绍

【Xcode学C-2】常量、变量、scanf、printf以及各种运算符介绍

一、常量

(1)整型常量:1

(2)浮点常量(即带有小数的):默认是double型,如5.3,float型的后面会有个f,如5.3f。

(3)字符常量:单引号的,‘a‘或‘1‘,里面只能是一个字节的字符,汉字不行,汉字占3个字节。

(4)字符串常量:双引号的,“hello”等。


二、变量

用int、double、float、char等定义变量。定义一个变量后,第一次赋值也称之为初始化。必须在初始化后再使用变量。

(1)变量的作用域是从定义起至遇到return}止,其实就是在一个函数内有效,出了这个函数就无效,除非是全局变量。

(2)需要先定义变量,再使用,因为代码是从上至下执行的。

(3)格式化输出,%i,%d,%c,%f,%04i,%.2f等占位符。

%i和%d无差别,%i是老式写法,%d是新式写法而已。

%.2f小数点后面的数字表示保留几位小数。

%4i表示数字位数宽度。如数字是1,那么结果是   1,前面保留三位。

%04i相比上面,是用0填补空位,即数字是1,那么结果是0001。这个在iOS开发中开发帧动画可能有用,系列图片编号是001,png、002.png、003.png等。

%-4i是右对齐,数字是1,输出结果是1   ,后面保留三位。

%4i,如果数字是12345多于4位,那么不会受到约束,全部输出12345。


三、scanf注意点

int main(int argc, const char * argv[]) {
    //利用scanf和printf,接受用户输入的两个数字,相加后输出和结果
    int number1;
    int number2;
    printf("plz input your first number:");
    //&表示取地址,scanf是要求用户输入
    scanf("%d",&number1);
    printf("then second number:");
    scanf("%d",&number2);
    int sum=number1+number2;
    printf("The sum is %d\n",sum);
    
    //scanf也可以一次接受多个输入,但是用户输入格式要和定义的一模一样
    //如下面一句,用户在输入时,两个数字之间也必须用逗号隔开
    //我们可以用任意符号作为分隔符,不一定是逗号
    //scanf("%d,%d",&number1,&number2);
    
    //如下,如果输入1234,那么程序只会截取前三位,即123,最终输出nnumber1也是123。
    //scanf("%3d",&number1);
    
    //在scanf中,以回车作为结束输入信号,所以不能用\n,如scanf("%d\n",&number1);
    
    //我们输入的东西放在输入缓冲区中,当按下回车键后,输入缓冲区中又个回车键/n,此时scanf会从这个输入缓冲区中取值,如果格式不匹配,则结束取值。
    //而结束取值后,输入缓冲区仍有一个数据和/n,所以遇到下一个scanf时,程序不会要求我们输入东西,而是直接到输入缓冲区取值进行赋值。
    //如下程序,我们输入a,第一个不匹配格式,number3里就是个随机数,而因为输入缓冲区中又a和\n,所以灭幼要求为myC输入一个值,而是直接到输入缓冲区中取值赋值给myC,如果还是不匹配,估计会一直这样持续下去。
    int number3;
    scanf("%d",&number3);
    printf("%d\n",number3);
    char myC;
    scanf("%c",&myC);
    printf("%c\n",myC);
    
    return 0;
}

四、运算符号

(1)除了+、-、*、/之外,还有%表示模运算取余。模运算取余一般用在得到一个范围内随机数的例子中,比如需要0~15之间的范围,就用%16。

int main(int argc, const char * argv[]) {
    //自动类型转换,有警告
    int number3=10.8;
    //强制类型转换
    int number4=(int)10.8;
    //类型提升:先把8转换成double才能和10.8相加,否则不可、这个转换是计算机自动完成的。
    //规律:把小类型的数据转换成大类型的数据类型
    double number5=10.8+8;
    //参与预算的数据是什么类型,出来的值就是什么类型,如下面结果是0,但并不是前面int的作用,替换成double仍然是0
    int number6=1/2;
    
    return 0;
}


(2)赋值运算符就是:=,或者+=、-=等等。


(3)自增自减有两种形式a++,++a,前者是先运算再自增、后者相反。所以b=a++和b=++a,前者的b=a,后者的b=a+1。

复杂的时a=10,b=(a++)+(a++),结果b是21,a是12。前面一个a++,先运算后自增,所以值是10,自增结果是11,到后面的a++时,a已经是11了,先运算的话就是用11和之前的10相加,等于21。然后自己增加一个变成12。


(4)sizeof()是计算数据以及数据类型占用内存大小的运算符。如int num1=sizeof(10)或者int num1=sizeof 10,或者先定义float a=10.5,然后int num1=sizeof(a)或者int num1=sizeof a。但是在计算数据类型时括号不能省略,即int num1=sizeof(float)。


(5)逗号运算符:是输出最后一个运算结果,如int b=(a=5,a++,a*6);结果是36。


(6)关系运算符:返回结果是真为1,假为0,且>、>=、<、<=的优先级高于==、!=,如果都是平级的时从左向右运算。关系运算符优先级小于+1*/这种算数运算符。


(7)逻辑与算符:与或非分别是&&、||、!。核心需要注意的时&&前面如果假,则后面的就不会运算了。||前面为真,则后面的就不会运算了。因为已经知道结果了,所以就省略运算了。

【Xcode学C-2】常量、变量、scanf、printf以及各种运算符介绍