zoukankan      html  css  js  c++  java
  • C连载26-强转、原型、待转与目标不匹配

    一、待转换的值和目标类型不匹配

    • (1)目标类型是无符号类型,且待赋的值是整数时,额外的位将被忽略。例如:目标类型时8位unsigned char,待赋的值时原始值求模256
    • (2)如果目标类型是一个有符号的整数,且待赋的值是整数,结果因实现而异
    • (3)如果目标类型是一个整数,且待赋的值是浮点数,该行为是未定义的。
    • 浮点值被转换为整数类型会进行截断,例如:26.325截断为26
    #include<stdio.h>
    int D26_1_conver(void) {
    	char ch;
    	int i;
    	float fl;
    
    	fl = i = ch = 'C';
    	printf("ch=%c,i=%d,fl=%2.2f
    ", ch, i, fl);
    
    	ch = ch + 1;
    	i = fl + 2 * ch;
    	fl = 2.0 * ch + i;
    	printf("ch=%c,i=%d,fl=%2.2f
    ", ch, i, fl);
    
    	ch = 1107;
    	printf("Now ch=%c
    ", ch);
    	ch = 80.89;
    	printf("Now ch = %c
    ", ch);
    
    	return 0;
    }
    

    26.1

    二、强制类型转换

    • 和Java一样,用(类型)变量名进行强制转换

    三、sizeof

    • 获取器右侧运算对象的大小(以字节为单位),运算对象可以是一个被圆括号括起来的类型说明符,如:sizeof(float), 或者是一个具体的变量名、数组名等,如:sizeof foo

    四、带参数的函数

    • 下面这种传递参数在Java中好像是不允许的,因为Java中是有“多态”特性的,如果可以的话,那么Java的多态不管用了
    #include<stdio.h>
    void pound(int n);//ANSI函数原型声明
    
    int D26_2_pound(void) {
    	int times = 5;
    	char ch = '!';   //ASCII码是33
    	float f = 6.0f;
    	 
    	pound(times);     //int类型的参数
    	pound(ch);       //和pound((int)ch);相同
    	pound(f);     //和pound((int)f);相同
    
    	return 0;
    }
    
    void pound(int n) {  //ANSI风格函数头
    	while (n-- > 0) {
    		printf("#");
    	}
    	printf("
    ");
    
    }
    

    26.2

    在ANSI C之前,C使用的是函数声明,而不是函数原型。函数声明只是指明了函数名以及返回类型,没有指明参数类型,为了向下兼容,C现在允许void pound();//ANSI C之前的函数声明,如果不加int n,那么程序中pound(f)会失败

    五、源码:

  • 相关阅读:
    用webclient.DownloadFile下载exe文件时大小为0
    C# ,asp.net 获取当前,相对,绝对路径(转)
    c#读取进程列表判断程序是否已经启动(转)
    如何提升页面渲染效率
    前端知识点总结——VUE
    ie7ajax 跨域 no transport 解决办法
    酷炫网址
    框架学习官网
    JavaScript数组方法大全(推荐)
    rem是如何实现自适应布局的
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13752558.html
Copyright © 2011-2022 走看看