[PIC®/AVR®/dsPIC®产品] 不同的变量类型赋值需要强制转换吗

[复制链接]
783|4
 楼主| 小明的同学 发表于 2025-3-24 10:27 | 显示全部楼层 |阅读模式
AI, he, TF, ma, 11, 代码
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         float a;
  5.         int b;
  6.         b=11;
  7.         a=b*0.5;
  8.    /* 我的第一个 C 程序 */
  9.    printf("%f Hello, World! \n",a);
  10.    
  11.    return 0;
  12. }


 楼主| 小明的同学 发表于 2025-3-24 10:28 | 显示全部楼层
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         float a;
  5.         int b;
  6.         a=12.1;
  7.         b=11;
  8.         b=a;
  9.    /* 我的第一个 C 程序 */
  10.    printf("%d Hello, World! \n",b);
  11.    
  12.    return 0;
  13. }
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),可能丢失数据,必须强制转换,格式通常是 “(目标类型) 源变量”,否则编译报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1640

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部