带你速通C语言——变量(2)

C语言是一种静态类型的编程语言,这意味着每个变量在被创建时都必须明确其类型,并且这个类型在编译过程中就已经确定。这与Python、JavaScript或PHP等动态类型语言不同,在那些语言中,变量的类型可以在程序运行时改变。

1.定义变量

在C语言中,声明变量时需要指定其类型,例如定义一个整数变量 age:

int age;

变量名可以包括大写字母、小写字母、数字和下划线但不能以数字开头。例如,AGE和 Age10都是有效的变量名,而 1age则不是有效的。

你还可以在声明变量时立即初始化它,指定一个初始值:

int age = 37;

声明后,你可以在程序中自由地使用这个变量,并在任何时候通过赋值来改变它的值,只要保证赋值时的数据类型与变量类型相符。比如:

age = 100;  // 正确
age = 37.2; // 警告,因为 37.2 是浮点数

如果尝试将一个浮点数赋给整数类型的变量,编译器通常会发出警告,并且自动将浮点数转换为整数,丢失其小数部分。例如:

#include <stdio.h>

int main(void)
{
    int age = 0;
    age = 37.2;           // 会发出警告,age 被赋值为 37
    printf("%d", age);
    return 0;
}

图片

输出结果 37

C语言支持多种内置数据类型,用于定义整数、字符、浮点数等:

  • 整数类型:包括 charintshortlong。这些类型用于存储整数,不同的类型根据存储的数值大小和内存消耗进行选择。

  • char:通常用于存储单个字符,如ASCII字符,但也可以存储小的整数(-128到127)。
  • int:是最常用的整数类型。
  • short和 long:分别提供比 int更小和更大的存储范围。
  • 无符号整数类型:通过在类型前加上 unsigned关键字,如 unsigned intunsigned char,可以将变量的存储范围从负数调整为从0开始的正数范围。

2.溢出问题

溢出问题是在处理整数类型时需要注意的一个重要问题。例如,如果一个 unsigned char的最大值是 255,再增加 1 会导致溢出,变成 0:

#include <stdio.h>

int main(void) 
{
    unsigned char j = 255;
    j = j + 10;
    printf("%u", j);           // 输出是 9,因为发生了溢出
    return 0;
}

图片

输出结果 9

浮点数类型如 floatdouble和 long double用于存储小数。这些类型可以表示非常大或非常小的数值,并且有不同的精度和范围,这取决于系统架构和编译器实现。

C语言不会自动处理超出数据类型限制的数值;如果超出,程序的行为可能是未定义的。因此,作为开发者,你需要确保使用的值在变量可接受的范围内。

3.动手运行试一试

你可以使用 sizeof运算符来查看不同数据类型在你的系统上占用的字节数,这有助于理解不同类型的存储需求:

#include <stdio.h>

int main(void) 
{
    printf("char size: %lu bytes\n", sizeof(char));
    printf("int size: %lu bytes\n", sizeof(int));
    printf("short size: %lu bytes\n", sizeof(short));
    printf("long size: %lu bytes\n", sizeof(long));
    printf("float size: %lu bytes\n", sizeof(float));
    printf("double size: %lu bytes\n", sizeof(double));
    printf("long double size: %lu bytes\n", sizeof(long double));
    return 0;
}

图片

4.小结

以上就是C语言中变量类型和变量的基本概念,希望这能帮助你更好地理解如何在C程序中使用不同的数据类型。

-------------------end

读者若感兴趣可关注个人微信公众号,将持续为您分享有用的工科知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值