小明的同学 发表于 2025-3-24 10:27

不同的变量类型赋值需要强制转换吗

#include <stdio.h>

int main()
{
        float a;
        int b;
        b=11;
        a=b*0.5;
   /* 我的第一个 C 程序 */
   printf("%f Hello, World! \n",a);
   
   return 0;
}

小明的同学 发表于 2025-3-24 10:28

#include <stdio.h>

int main()
{
        float a;
        int b;
        a=12.1;
        b=11;
        b=a;
   /* 我的第一个 C 程序 */
   printf("%d Hello, World! \n",b);
   
   return 0;
}
12 Hello, World! 如果将浮点赋值给整数变量,看来会自动舍弃小数。

灰色与青 发表于 2025-8-29 13:52

不同变量类型赋值是否强制转换,取决于类型兼容性。若为 “隐式转换” 场景(如 int 赋值给 long,小范围转大范围),编译器自动完成,无需手动操作;若为 “显式转换” 场景(如 double 转 int,大范围转小范围),可能丢失精度或数据,必须手动强制转换(如 (int) 3.14),否则编译报错,以此避免潜在风险。

小岛西岸来信 发表于 2025-9-16 15:46

不同变量类型赋值是否需强制转换,取决于类型转换方向。若为隐式转换(低精度→高精度,如 int→double),编译器自动完成,无需强制转换;若为显式转换(高精度→低精度,如 double→int)或不兼容类型(如 int→指针),必须手动强制转换,否则编译报错,且转换可能丢失数据,需谨慎处理。

短句家 发表于 2025-9-19 14:12

不同变量类型赋值是否强制转换,要看类型范围和方向。
若目标类型范围≥源类型(如 int 赋值给 long),会自动转换,不用手动操作;若目标类型范围<源类型(如 long 赋值给 int),或不同类型(如 double 转 int),可能丢失数据,必须强制转换,格式通常是 “(目标类型) 源变量”,否则编译报错。
页: [1]
查看完整版本: 不同的变量类型赋值需要强制转换吗