加载中…
个人资料
陶唐浪迹_唐伟
陶唐浪迹_唐伟
  • 博客等级:
  • 博客积分:0
  • 博客访问:569
  • 关注人气:54
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言笔记003-变量 运算符 表达式

(2016-04-05 15:01:15)
标签:

c语言

数据类型

变量

运算符

表达式

分类: ◆C语言

1.基本数据类型

整型  :处理整型数据用的。

C89

       有符号   短整型   整型   长整型(负)  

       无符号   短整型   整型   长整型(非负)

             在64位计算机系统中Mac OS 

          955888 0200 0054 33379

          类型                   最小值              最大值

          short int            -32768              32767

unsigned short int        0                   65535

          int               -2147483648  2147483647

unsigned int                  0            4294967295

          long int     -9223372036854775808

                                   9223372036854775807

unsigned long int       0       18446744073709551615

计算过程:

short int 最小值 -2^15 ~2^15-1

unsigned short int 最小值 0 ~ 2^16-1

int 最小值 -2^31 ~ 2^31-1

unsigned int 最小值 0 ~2^32-1

long int 最小值 -2^63 ~ 2^63-1

unsigned long 最小值 0 ~ 2^64-1

sizeof关键字 用来计算所占内存字节数

sizeof(shrot int)---->2Byte---->2*8 = 16bit

sizeof(int)---->4Byte---->4*8 = 32bit

sizeof(long int)---->8Byte---->8*8 = 64bit

补充:32位  16位系统中所占内存情况

32位

char 1字节

short 2字节

int     4字节

long 4字节

long long 8个字节


#include 


int main(int argc, const char * argv[])

{

//1.复习变量  注意 使用变量前必须要先声明

//声明变量  类型标识符 变量名; 不能有中文

//短整型 short int 整型 int 长整型 long int


//2.声明变量并初始化(赋初始值)

int x = 100;

//3.输出10进制整型 %d

    printf("输出10进制整型:%d\n",x);

//4.输出8进制整型 %o  以0开头 0123,025;

    printf("输出8进制整型:%o\n",x);

    printf("输出8进制整型:%#o\n",x);

//5.输出16进制整型 %x 以0x或0X

    printf("输出16进制整型:%x\n",x);

    printf("输出16进制整型:%#x\n",x);

//6.短整型 短整型 %d或%hd

    short int si = 200;

    printf("输出short int:%d\n",si);

    printf("输出short int:%hd\n",si);

//7长整型 输出长整型 %ld

    long int li = 300;

    printf("输出long int:%ld\n",li);

//8 C99标准中的long long int

    long long int lli = 400;

    printf("输出long long int:%lld\n",lli);


return 0;

}



16位

char 1字节

short 2字节

int      2字节

long  4字节


#include 

int main(int argc, const char * argv[])

{


    //1.计算short int所占内存字节数

    printf("short int所占内存字节数:%lu\n",sizeof(short));

    printf("unsigned short所占内存字节数:%lu\n",sizeof(unsigned short));

    //2.计算int uint 所占内存字节数

    printf("int 所占内存字节数:%lu\n",

           sizeof(int));

    printf("unsigned int 所占内存字节数:%lu\n",sizeof(unsigned int));

    //3.计算long ulong 所占内存字节数

    printf("long 所占内存字节数:%lu\n",sizeof(long));

    printf("unsigned long 所占内存字节数:%lu\n",sizeof(unsigned long));

return 0;

}


思考题:

   short    2Byte          16bit

   xxxx    xxxx    xxxx   xxxx

   0111  1111   1111  1111 = 0x7FFF = 32767

   1000  0000   0000  0000 = 0x8000=-32768

   unsigned short  2Byte  16bit

   xxxx   xxxx    xxxx    xxxx


#include 


int main(int argc, const char * argv[])

{

//1.给变量 初始化

int a = 0;

    char b = 0;

    float c = 0;

    double d = 0;

    //2.给变量赋值

    a = 50;

    b = 'A';

    c = 3.14f;

    d = 3.14159265857;

//3.表达式的值赋值给一个变量

a = 100 + 50;

b = 97 - 32;

    //4.结合sizeof使用

    int li = sizeof(int);

    int lc = sizeof(char);

    //5.a+=b <==> a = a + b;

int i = 0;

i += 1;

int j = 0;

    j = j + 1;

    printf("i = %d j = %d\n",i,j);

return 0;

}


       1.变量 在程序运行过程中其值可以被改变,也就是说这个变量所在的内存地址中存储的数据(2进制数据)可以发生变化。

       2.使用变量前必须要声明,且变量名不能重复,还必须是一个合法的标识符。

       3.使用变量的时候要初始化。

           int x = 0;

           作用:给变量赋一个初始值 0.当然根据自己的需要赋一个有具体数值的值 100。目的是防止变量在程序执行过程中出现垃圾值。

4.编码规范 (C命名规范)

1.驼峰命名

             getName,isEnd;

2.宏定义

             #define MUSIC "/Users/.….."

3.变量 一般都小写

int a;

4.结构体 名称大写

             struct Student

{

};

         5.公司的前缀  Tarena(Ta)

         6.使用空格让你的代码更清晰 a = 100;

         7.使用空行让你的代码结构更清晰,函数和函数之间要空一行。

C99

        long long int

实型  :处理浮点类型的数据的。

C89

        单精度浮点:表示范围和有效位数少。

        float  使用%f 或 .2f  6~7位

        float 内存所占字节数  4Bytes = 32bits

        xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

        x 最高位,第31位是符号位 0正 1负

        第23位 ~第30位 这8bits 叫做指数位。

        第0位   ~第22位  这些位 是有效位数。

        双精度浮点:表示范围和有效位数多。

        double 使用%lf 或.nlf   所占 内存字节数 8 Bytes = 64bits  有效位数 7~13 实际上

可以比这个更宽泛15 ~ 16位。

        double的表示范围 -1.7*10^308 ~1.7*10^308

C99

        长双精度浮点:表示的范围更宽泛。

long double


#include 


int main(int argc, const char * argv[])

{


    //1.声明一个单精度浮点类型的变量并赋值3.1415

    float pi = 3.1415f;

//2.输出浮点类型的数据

    printf("pi = %f\n",pi);

    //%f 打印出来的数据 是6位有效位数 3.141500

    //3.变量可以通过 赋值运算符,赋一个新的值

pi = 3.1415926f;

    //4.输出新的pi的值 从第7位开始四舍五入

    printf("pi = %f\n",pi);

    //5.输出指定位数的小数 保留小数点后2位。

    printf("pi = %.2f\n",pi);

    //6.双精度浮点类型 double 输出%lf %e %E

    double du = 128.45;

    printf("du = %lf\n",du);//默认6

//小数点后17位,最多到16位

    du = 3.14159265857123456;

    printf("du = %.16lf\n",du);

    printf("du = %.17lf\n",du);


return 0;

}


     字符型:用来表示计算机中得字符数据类型。可见字符 a A , 8,(,];都是可见字符。control 键  enter回车键等 控制字符。

     有英文字符,有数字字符,中文字符。引文字符(含标点符号)以及数字字符都占一个占位符,中文字符(汉字),标点2个占位符。

     字符集 ASCII码,UTF-8,16,32,64很多,GB2300 GB2312 BIG5等。

1.字符类型常量

        'a'~'z' 'A'~'Z' '0'~'9' ',' '.''[' ')' '*' '&';

转义字符

        \n 换行  \r回车  \b退格键

        \t 水平制表符 \v垂直制表符

补充:

         "\033[30m XXXXX"

                     31m

        注意:只要一提到是字符常量 'a','A','9';字符串有所区别 "字符串常量";

     2.字符类型变量 char ---->1Bytes--->8bit

         有符号的字符类型 char 

         表示的范围 -2^7 ~ 2^7-1 -128 ~ 127

         无符号的字符类型 unsigned char

         无符号表示的范围 0 ~ 255 (共 256字符)

         注意:C语言中 字符类型其实就是一个特殊的整型,存储的是字符的ASCII码。

3.ASCII码

         小写  'a' ~ 'z'    97

         大写 'A' ~ 'Z'    65    ====》65 + 32 = 97

         数字 '0' ~ '9'    48

4.字符类型输入和输出

        printf("%c\n");

        scanf("%c",&变量名);


#include 


int main(int argc, const char * argv[])

{

//1.模拟QQ登陆  1.QQ号  2.密码(数字)

int no = 0;//账号

    int password = 0;

//UI界面

    printf("=========================\n");

    printf("       QQ2014版\n");

    printf("QQ账号:\n");

//2.输入账号 账号是个整数

    scanf("%d",&no);

    printf("QQ密码:\n");

    //3.输入密码 密码理解状态下纯数字 6位

    scanf("%d",&password);

    printf("=========================\n");

//4.输出数据

    printf("QQ号:%d 密码:%d\n",no,password);

    //-----------------------------------

//输入 输入浮点类型的数据

    //输入一个上网的时长 2.5 小时

double hour = 0;

//提示用户输入上网时长

    scanf("%lf",&hour);

//输出一下上网的时长

    printf("上网时长:%.2lf\n",hour);

    //-------------------------------

//从键盘上输入字符 或多个字符

char sex = 0;

    printf("请输入您的性别:男M 女W\n");

//清空输入缓冲区 多余\n

    setbuf(stdin, NULL);

//然后再输入

    scanf("%c",&sex);

//输出

    printf("性别:%c\n",sex);

return 0;

}


2.构造类型

3.指针类型

4.空类型

5.自定义类型

二、数据操作

1.运算符和表达式

   1.1 算术运算符和算数表达式

          +(正) -(负) * /(取整) %(取余)

          四则运算  + 加法运算,也可以表示正数。a + b;

                            -  减法运算,也可以表示负数。a - b,-5;

                            *  乘法运算。 a * b;

                            /  除法以及取整运算。a/b

                            % 取余数。

                            ++ 自增运算符

                            --   自减运算符

         注意:/ 取整 和% 取余数,可以做按位取值。

         例子:1256 ---->千 百 十 个上的数。

                      7199秒---->XX小时XX分钟XX秒。

         结论:++i + ++i + ++i这样的表达式,意义不大。让大家知道不要循环的给中间变量取赋值。


#include 


int main(int argc, const char * argv[])

{

int i = 0;

    int a = i++ + i++ + i++;//3 或 0

int j = 0;

    int b = ++j + ++j + ++j;//6 或 7

    printf("a = %d\n",a);

    printf("b = %d\n",b);

return 0;

}


#include 


int main(int argc, const char * argv[])

{

    //1.自减运算符 也是在自己的基础上每次减少1

//通常也是和循环一起使用

int i = 5;

i--;

    printf("i = %d\n",i);

int j = 5;

--j;

    printf("j = %d\n",j);


return 0;

}


1.2 赋值运算符和赋值表达式

          = 赋值运算符  右结合 作用给变量赋值用。

          a = 100  读作把100 赋值给变量a;

          +=,-=,*=,/=,^=等。

          a+=b 就相当于a = a + b;

          a-=b  就相当于a = a -  b;

          a*=b 就相当于a = a * b;

          a/=b 就相当于a = a / b;

          a^=b 就相当于 a = a ^ b;


#include 


int main(int argc, const char * argv[])

{

//1.声明一个字符类型的变量 a,赋值 'A'

    char a = 'A'; //65  'A' ~ 'Z'

    char b = 'a'; //97  'a' ~ 'z'

    char c = '0'; //48  '0' ~ '9'

//2.使用printf()函数输出 %c 输出的是字符

    printf("a = %c\n",a);

    printf("b = %c\n",b);

    printf("c = %c\n",c);

//3.使用printf()函数输出 %d 输出的该字符的ASCII码的码值。

    printf("a码值 = %d\n",a);

    printf("b码值 = %d\n",b);

    printf("c码值 = %d\n",c);

//4.ASCII进行 字符的大小写转换 a--->A,A--->a

    char d = 'q'; //q->Q

    printf("%c\n",d - 32);

    char e = 'R'; //R->r

    printf("%c\n",e + 32);

//练习:请你使用ASCII 输出  I LOVE YOU

    printf("%d%d%d%d%d%d\n",'I',' ','L','O','V','E');

return 0;

}


1.3 关系运算符和关系表达式

1.4 逻辑运算符和逻辑表达式

*1.5 位运算符和位操作表达式

   1.6 逗号运算符和逗号表达式

   1.7 条件运算符和条件表达式



   作业1:复习Day03以前掌握不牢固的知识点。

                 掌握算术运算符、赋值运算符的用法

                 掌握基本数据类型中 整型 实型 字符型的基本输出和输入。

                 掌握ASCII码 知道a~z A~Z 0~9 的码值和计算方法。

                 掌握C语言程序框架

  作业2:编程题 用今天学过的知识,实现一个4则运算的计算器,就是你输入两个数,自动计算出 和 差 积 商。并能准确的显示。

  作业3:编程题 计算圆面积,要求你自己设计程序中要使用的变量的类型和个数。计算结果保留小数点后2位。

*作业4:求100以内的所有素数。

  *思考题:谷歌面试题2分内做答,答案正确我们将考虑产品经理一职,年薪30万人民币。8个 相同大小,相同颜色的

等大实心球,有一个球在生产过程中不小心掉进一根铁钉,

只有一个托盘天平(没有砝码 游码卡死不能动)请你用该天平找到这个不合格的小球(最多只能称2次)。

  2.请你给这个天平设计一套砝码,能够称重出100克以内的任何质量,最少用几个砝码,他们的克重都是多少。




#include 


int main(int argc, const char * argv[])

{

    //1.声明2个整型的变量a和b,初始化为0。

int a = 0;

int b = 0;

//保存结果

    int res = 0;

    //2.提示用户输入

    printf("请输入a和b的值:如 100 50\n");

//3.从键盘输入数据

    scanf("%d %d",&a,&b);

    //4.计算变量a 和 变量b的和。

res = a + b;

//5.输出结果

    printf("a+b = %d\n",res);

    //练习:试计算a - b,a * b,a / b;

res = a - b;

//输出a - b的值

    printf("a-b = %d\n",res);

//a * b

res = a * b;

//输出a 和 b的积

    printf("a*b = %d\n",res);

//a / b

res = a/b;

    //结果 注意/ 取整运算如果0.5被取整以后输出 0

    printf("a/b = %d\n",res);

    //思考1:如果想要输出结果为 0.5 如何处理?

    printf("a/b = %.2lf\n",(double)a/b);

//取余数 %

res = a % b;

    printf("a%%b = %d\n",res);

    //思考2:输入任意一个秒数转化成XX小时XX分XX秒。 7199秒 = 1小时59分59秒

    //1小时 = 3600秒 7199/3600 = 1 小时

//1小时 = 60分钟

//1分钟 = 60秒

int h = 0;//小时

    int m = 0;//分钟

    int s = 0;//秒

    int sec = 0;//你输入的秒数

//提示用户输入一个秒数

    printf("请您输入一个时间:如 7199秒\n");

    scanf("%d",&sec);

//进行换算

    h = sec / 3600;//取整  1小时

    m = sec600/60;//取整 1小时

    s = sec600`;//拿到剩余的秒数59

//自己搞定秒

    printf("%d小时-%d分钟-%d秒\n",h,m,s);

    //练习2:5128数字,请你用 / %两个运算符,分别拿到 千 百 十 个,然后逆序输出8215。

    //自增运算符 ++ 就是变量在自己原有的基础上+1

    //这两个运算符常常配合循环一起使用。

    //i++,++i 都是在自己的基础上加1;

int x = 5;

x++;

    printf("x = %d\n",x);

int y = 5;

++y;

    printf("y = %d\n",y);

    //自减运算符 --  在原来的基础上值-1

return 0;

}


#include 

#include 

#include 

//找一首你喜欢的歌曲做铃声

#define MUSIC "/Users/tarena/Desktop/love.mp3"

//封装一个函数

void myClock(void)

{

    //保存 小时  分钟  

    int h = 0;

    int m = 0;

    int s = 0;

    int sum = 0;

    //1小时=3600秒  1分钟=60秒

    printf("亲~请输入提醒时间时-钟-秒\n");

//键盘上输入数据

    scanf("%d %d %d",&h,&m,&s);

//转换总秒数

    sum = h*3600 + m*60 +s;

//让计算机数数

while(sum--)

{

        sleep(1);

        printf("[%d]秒\n",sum);

}

    //当倒数计时到0的时候 放一首歌

    execl("/Applications/iTunes.app/Contents/MacOS/iTunes","iTunes",MUSIC,NULL);

}


int main(void)

{

myClock();

    return 0;

}



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有