4. 28 C语言 数据类型,运算符 , sizeof


() [] ->  . ! ++ --   

圆括号、方括号、指针、成员、逻辑非、自加、自减 

++  --  *  &  ~  !  +  -  sizeof(cast)  

单目运算符 

 /  % 

算术运算符 

 -  

算术运算符 

<<  >> 

位运算符 

 <=  >  >= 

关系运算符 

==  != 

关系运算符号 

& 

位与 

^ 

位异或 

| 

位或 

&& 

逻辑与 

|| 

逻辑或 

 ?  : 

条件运算符 

 +=  -=  *=  /=  %=  &=  |=  ^= 

赋值运算符 

, 

顺序运算符 

C 语言中的运算符号


数据类型 

基础数据类型 

注意:以下是典型的数据位长和范围。编译器可能使用不同的数据位长和范围。 

 

关键字 

位长(字节) 

范围 

格式化字符串 

char 

1 

-128..127(或0..255,与体系结构相关) 

 %c 

unsigned char 

1 

0..255 

 %c, %hhu 

signed char 

1 

-128..127 

 %c, %hhd, %hhi 

int 

2(16位系统 

4 

-32768..32767  

-2147483648..2147483647 

 %i, %d 

unsigned int 

 

4 

0..65535  

0..4294967295 

 %u 

signed int 

 

4 

-32768..32767  

-2147483648..2147483647 

 %i, %d 

short int 

2 

-32768..32767 

 %hi, %hd 

unsigned short 

2 

0..65535 

 %hu 

signed short 

2 

-32768..32767 

 %hi, %hd 

long int 

 

8 

-2147483648..2147483647  

-9223372036854775808..9223372036854775807 

 %li, %ld 

unsigned long 

 

8 

0..4294967295  

0..18446744073709551615 

 %lu 

signed long 

 

8 

-2147483648..2147483647  

-9223372036854775808..9223372036854775807 

 %li, %ld 

long long 

8 

-9223372036854775808..9223372036854775807 

 %lli, %lld 

unsigned long long 

8 

0..18446744073709551615 

 %llu 

float 

4 

3.4x1038..3.4x10+38 (7 sf) 

 %f, %e, %g 

double 

8 

1.7x10308..1.7x10+308 (15 sf) 

 %lf, %e, %g 

long double 

或以上 

编译器相关 

 %Lf, %Le, %Lg 


数据类型由高到低: 

long double  

double 

float 

unsigned long long 

long long  

usigned long 

long  

unsigned int 

int 


各类型数据间混合运算转换 

 

double           <—  float 

 ^

 |

long 

 ^

 |

unsigned 

 ^

 |

int     < —          char,  short 


  • 使用终端编译运行c源文件: 

 

E0125:~ knight$ cd /Users/knight/Documents/CCode      cd 进入路径 

E0125:CCode knight$ ls                                ls 查看文件 

helloworld.c 

E0125:CCode knight$ cc -c helloworld.c                cc -c 编译,生成 .o 文件 

E0125:CCode knight$ cc helloworld.o                   cc .o 链接 

E0125:CCode knight$ ./a.out                           生成可执行文件a.out 

Hellow ,C! 

E0125:CCode knight$  


Sizeof( )用法: 

 

#include <stdio.h> 

 

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

     

    int a = 15; 

     

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

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

     

    short a1 = 8; 

    int size = sizeof(a1); 

    printf("short size = %d byte\n", size); 

     

    int a2 = 8; 

    size = sizeof(a2); 

    printf("int size = %d byte\n", size); 

     

    long a3 = 8; 

     

    size = sizeof(a3); 

    printf("long size = %d byte\n", size); 

     

    float a4 = 8; 

    size = sizeof(a4); 

    printf("float size = %d byte\n", size); 

     

     

    double a5 =8; 

    size = sizeof(a5); 

    printf("double size = %d byte\n", size); 

     

    long double a6 = 8; 

    size = sizeof(a6); 

    printf("long double size = %d byte\n", size); 

     

    char a7 = 'A'; 

    size = sizeof(a7); 

    printf("char size = %d byte\n", size); 

     

    char b[3] = ""; 

    size = sizeof(b); 

    printf("Chinese word size = %d byte\n", size); 

    return 0; 

     

 

} 


运行结果: 

 

a = 30 

a = 7 

short size = 2 byte 

int size = 4 byte 

long size = 8 byte 

float size = 4 byte 

double size = 8 byte 

long double size = 16 byte 

char size = 1 byte 

Chinese word size = 3 byte 

Program ended with exit code: 0 


作业: 

1,2,3,4题略 

 

5.编写一个程序,实现任一人民币金额按最大面值进行拆分,例如: 1999元可以 

拆分为19张面值为100元,1张面值为50元,2张面值为20元,1张面值为5元,4 

面值为1元的人民币。 2883元如何拆分? 

 

#include <stdio.h> 

 

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

     

    int n = 2883; 

     

    int a, b, c, d, e , f; 

     

    int ar, br, cr, dr , er, fr; 

     

    a = n / 100;     //a = 28 

    ar = n % 100;    // ar = 83 

     

    b = ar / 50;     //b = 83 / 50 = 1 

    br = ar % 50;    //br  = 33 

     

    c = br / 20;     //c = 1 

    cr = br % 20;    //cr = 13 

     

    d = cr / 10;      //d = 1 

    dr = cr % 10;     //dr = 3 

     

    e = dr / 5; 

    er = dr % 5; 

     

    f = er / 1; 

    fr = er % 1; 

     

    printf("2883元可以拆分为: \n"); 

    printf("100元面值%d\n",a); 

    printf("50元面值%d\n",b); 

    printf("20元面值%d\n",c); 

    printf("10元面值%d\n",d); 

    printf("5元面值%d\n",e); 

    printf("1元面值%d\n",f); 

    return 0; 

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值