04 基本数据类型转换

1,自动类型转换

  ①在C程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。

  ②数据类型按精度(容量)大小排序为:

  

  

  ③数据类型自动转换规则

    

  ④

 1 #include<stdio.h>
 2
 3 void main() {
 4     char c1 = ‘a‘;
 5     int num1 = c1; //ok char精度小于int精度
 6     double d1 = num1;//ok int精度小于double
 7     printf("c1=%c num1=%d d1=%f\n", c1, num1, d1);
 8
 9     short s1 = 10;
10     int num2 = 20;
11     int num3 = s1 + num2;//ok
12     printf("s1=%d num2=%d num3=%d\n", s1, num2, num3);
13
14     float f1 = 1.1f;//ok
15     double d2 = 4.58667435;
16     f1 = d2;  // 出现精度丢失(double->float>  warning : 从“double”转换到“float”,可能丢失数据
17     printf("f1=%f d2=%f\n", f1,d2);
18 }

  ⑤自动类型转换细节说明

    有多种自动类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如int型和short型运算时,先把short转成int型后进行运算)

    若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型

    在赋值运算中,赋值号两边的数据类型不同时,赋值号右边的类型将转换成左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入

2,强制类型转换

  ①将精度高的数据类型转换成精度小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。

  ②强制类型转换一般格式如下:

    (类型名)表达式

      表达式:任何有值的都可以称为表达式,比如 1+2 , int num=2

  ③这种强制类型转换操作并不改变操作数本身

 1 #include<stdio.h>
 2
 3 void main() {
 4     double d1 = 1.934;
 5     int num = (int)d1; //这里注意,不是四舍五入,而是直接截断小数后的部分
 6     printf("num=%d d1=%f\n", num, d1);
 7
 8
 9     //强制类型转换只对最近的数有效,如果希望针对更多的表达式转换,使用()
10     int num2 = (int)3.5 * 10 + 6 * 1.5;  // 30+9.0=39.0->39 warning:从“double”转换到“int”,可能丢失数据
11     int num3 = (int)(3.5 * 10 + 6 * 1.5); //35.0+9.0=44.0->44
12     printf("num2=%d num3=%d\n", num2, num3);
13
14
15 }

  ④强制类型转换细节说明

    当进行数据的从精度高 -- 》 精度低,就需要使用到强制转换

    强制转换只针对于最近的操作数有效,往往会使用小括号提升优先级

  

    

      

  

原文地址:https://www.cnblogs.com/shanlu0000/p/12337460.html

时间: 2024-08-12 20:18:10

04 基本数据类型转换的相关文章

关于Java中的基本数据类型转换

Java中的基本类型有四种,其中整型分为byte.short.int.long,浮点型分为float.double,字符型char,布尔型boolean.8种类型的级别由低到高byte->short/char->int->long->float->double. Java中的基本数据类型转换分为隐式类型转换(自动类型转换)和显式类型转换(强制类型转换). 隐式类型转换是将一个较低级别的值或变量赋给一个较高级别的变量,在这种情况下,Java会自动地将较低级别的变量或值转换成与较

小白学开发(iOS)OC_基本数据类型转换成字符串(2015-08-12)

// //  main.m //  基本数据类型转换成字符串 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      基本数据类型:(int float,double

字符串转换成基本数据类型和基本数据类型转换成字符串

基本数据类型转换成字符串采用包装类.toString() 字符串转换成基本数据类型采用包装类.valueOf(string).xxxValue()

一、Java语言基础(2)_类型和运算——基本数据类型转换

2018-04-11 基本数据类型转换 一.数据过大和溢出 溢出:数据超出数据类型的临界范围 如果溢出情况发生时,程序没有做数据检查范围处理,则会出现数据紊(wen)乱 二.基本数据类型自动转换(隐式转换) 在八大基本类型中,boolean不属于数值类型,不参与转换: 一般byte,  short,  char  三者不相互转换,而是把byte,  short,  char直接转换成int. 转换规则: 各自类型的空间大小,(从小的转换成大的)看图: 把不同数据类型看成是不同容量的容器: 二.基

JavaSE基础(十)--Java中的基本数据类型转换

说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示. 重新温故了下原始数据类型,现在来解释下它们之间的转换关系. 自动类型转换 自动类型转换是指:数字表示范围小的数据类型可以自动转换成范围大的数据类型. 如: long l = 100; int i = 200; long ll = i; 具体自动转换如如下图所示. 实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题. 自动转换也要小心数据溢出问题,看下面的例子.

基本数据类型转换

自动类型转换:容量小的数据类型自动转换成容量大的数据类型.            char                           int long float double byte     short 一字节是8位,一字是2字节. 有多种类型的数据计算时.系统会将所有的数据类型转换成最大的数据然后进行计算. byte short char之间不会自动转换,他们三者计算会首先转换成int在进行计算. 当把任何基本类型的数据和自负类型的数据进行链接运算(+),得到的是字符类型的数据.

字符串与基本数据类型转换

1. - (NSUInteger)length; 返回字符串的长度(有多少个文字) - (unichar)characterAtIndex:(NSUInteger)index; 返回index位置对应的字符 2.字符串和其他数据类型转换 转为基本数据类型 - (double)doubleValue; - (float)floatValue; - (int)intValue; NSString *str1 = @"110"; NSString *str2 = @"10"

java 基本数据类型转换

下述的强制类型转换. 如: short i=99  char c=(char)i; System.out.println("output:"+c);  4. 不能在布尔值和任何数字类型间强制类型转换: 5. 不同级别数据类型间的强制转换,可能会导致溢出或精度的下降.  6. 当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型.例如:byte b;     b=3;     b=(byte)(b*3);//必须声明byte.  包装数据类型与基本数据类型之间的

java基本数据类型转换成byte[]数组

import java.io.UnsupportedEncodingException;  public class ConToByte {      /**     * double转换byte     * @param  arr  byte[]     * @param  param    double   double类型的参数     * @param  index  int     */     public static void putDouble(byte[] arr, doub