首页 > 其他分享 >C语言 形参和实参

C语言 形参和实参

时间:2024-10-01 21:05:20浏览次数:8  
标签:形参 int 浮点数 float long C语言 实参 精度 指针

在C语言中,强制类型转换(强转)可能会导致精度发生变化,具体情况取决于转换的类型。

  1. 数值类型转换

    • 浮点数转换为整数
      • 当把浮点数强制转换为整数时,小数部分会被直接截断,精度必然会发生变化。例如:
        float num = 3.14;
        int result = (int)num;
        // 此时result的值为3,小数部分0.14被截断
        
    • 高精度整数转换为低精度整数
      • 例如,将long long类型转换为int类型(假设long long的取值范围大于int),如果long long类型的值超出了int类型的取值范围,就会发生数据截断,导致精度变化。
        long long bigNum = 10000000000LL;
        int smallResult = (int)bigNum;
        // 由于bigNum超出了int的取值范围,smallResult的值可能是一个错误的值
        
    • 整数转换为浮点数
      • 通常情况下,将整数转换为浮点数不会损失精度(在浮点数能够表示该整数的范围内)。例如:
        int num = 5;
        float result = (float)num;
        // result的值为5.0,没有精度损失
        
    • 不同精度浮点数之间的转换
      • 当把高精度的浮点数(如double)转换为低精度的浮点数(如float)时,可能会发生精度损失。因为float的有效数字位数比double少。
        double bigDouble = 1.23456789012345;
        float smallFloat = (float)bigDouble;
        // smallFloat的值可能会近似为1.2345679,精度有所损失
        
  2. 指针类型转换(特殊情况)

    • 指针类型转换本身不涉及数值精度的概念,但如果不正确地使用转换后的指针进行数据访问,可能会导致数据错误解读,类似于精度问题。例如,将int *类型的指针强制转换为char *类型的指针,然后按char类型逐个字节地访问原本为int类型的数据,会导致数据的错误理解。
    • 如果将一个指针类型转换为不兼容的指针类型(例如,将指向结构体的指针转换为指向函数的指针)并进行解引用操作,这是未定义行为,可能会产生不可预测的结果,这也可以看作是一种特殊的“精度”(数据完整性)被破坏的情况。

标签:形参,int,浮点数,float,long,C语言,实参,精度,指针
From: https://www.cnblogs.com/androidsuperman/p/18443271

相关文章

  • c语言中的链接性和作用域
    什么是链接性链接性指的是标识符(如变量、函数)在多个翻译单元(通常是多个源文件)之间共享和可见的能力。链接性决定了标识符的作用范围,即它能在多大范围内被访问或引用链接性无链接性:标识符只能在局部作用域内使用,通常用于局部变量内部链接性:标识符只能在定义它的文件内使用,使......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务1#include<stdio.h>intmain(){printf("oo\n");printf("<H><H>\n");printf("IIII\n");return0;} 2.实验任务2//从键盘上输入三个数据作为三角形边长,判断其能否构成三角形//构成三......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务1task1_1.c#include<stdio.h>intmain(){printf("o\n");printf("<H>\n");printf("II\n");printf("o\n");printf("<H>\n");printf("II\n&q......
  • 初识C语言
    C语言人机交互的一门语言 一刚发明计算机时人们普遍用着二进制语言也就是0和1的组合,那时的人们要编程,要翻书对应其数字0和1代表的意义,后来人们将一些常见的0和1写成助记符于是就形成了汇编语言,然而汇编语言仍然不够省事,于是人们苦思冥想,想出了编译器这一转折性的app,人们......
  • C语言数组探秘:数据操控的艺术【下】
    承接上篇,我们继续讲数组的内容。八.二维数组的使用当我们掌握了二维数组的创建和初始化,那我们怎么使用二维数组呢?其实二维数组访问也是使用下标的形式的,二维数组是有行和列的,只要锁定了行和列就能唯一锁定数组中的一个元素。C语言规定,二维数组的行是从0开始的,列也是从0......
  • 鹏哥C语言62---第9次作业:函数递归练习
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>//-------------------------------------------------------------------------------------------第九次作业 函数递归等//----------------------------------------------------------------......
  • 鹏哥C语言59-60---三子棋游戏
    //------------------------------------------------------5. 数组实现(游戏)-----------------------------------------//----------------------------------------------------5.1利用数组实现三子棋----------------------------------------//分块 test.c  ......
  • 实验1 C语言输入输出和简单程序编写
    一,实验目的1.会使用C语言程序开发环境(vs2010/devc++等),能熟练、正确使用它们编写、编译、运行、调试C程序2.知道C程序结构和编码规范,能正确使用3.能正确、熟练使用C语言输入输出函数:scanf(),printf(),getchar(),putchar()4.能灵活、组合使用基本数据类型、运算符和......
  • C语言:排序(1)
    目录一、排序的概念及应用排序的概念排序的运用 二、常见排序算法插入排序基本思想直接插入排序希尔排序(缩小增量排序)选择排序基本思想堆排序一、排序的概念及应用排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列......
  • C语言1—100的数字炸弹小游戏
    #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<stdlib.h>#include<time.h>void menu(){printf("1=开始游戏\n");printf("0=不进行游戏\n");printf("请选择:");}void game(){int num=rand()%100+1; int inp......