C语言中,给一个变量赋值时,赋给的值类型要和这个变量的类型一样吗

比如定义字符变量,赋值 是就要赋与它字符

不一定。
有强制类型转换与隐式类型转换的问题。
比如 int a; float b = 1.5;
a = b;
是可以的,只不过a = 1;

相同于 a = (int) b;
但是int** = int*;就不会隐式类型转换了,编译器会报错。
但此时可以强制类型转换:
int* p1 = NULL; int** p2 =NULL;

p2 = (int**)p1;

具体可以百度强制类型转换与隐式类型转换。
以上。追问

char a
int b
a='A'
b=a+8
在运算b的时候是不是用到了隐式转换

追答

对。b = a + 8;
8识别为int型,char型与int型相加赋值给int型。
等号右侧 char + int,那么char先隐式转换为int型,值为65(Ascii表),与int型的8相加,值为int型的73。最后再将该赋值给int的b。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-19
C是若类型语言,复制时不检查等号左右类型是否匹配,比如char a=66,也是可以的,你输出printf("%c",a); 打印的是B,因为大写B的ASCII码就是66,但这种方式有时可能引起预期不到的问题追问

明白了,谢谢

本回答被网友采纳
第2个回答  2015-11-11
严格来说是这样的,但是比如说你定义一个浮点儿型变量,赋给它一个整数也是可以的,它可以自动将你赋予的整数变为浮点儿型,如果你定义了一个字符变量,赋值时赋一个整型也是没有问题的,因为每一个字符都对应着一个整形数(ASCII码).本回答被网友采纳
第3个回答  2015-11-11

对,就是这个意思

#include <stdio.h>
int main()
{
    int a=12;
    char b='m';
    float c=3.1415;
    bool d=true;
    return 0;

上面的就是分别赋值不同的变量值,希望采纳,谢谢

追问

我是初学C,这代码高深的让我看不懂

追答#include <stdio.h>
int main()
{
    int a=12;        //为int整型a赋值12;
    char b='m';      //为char字符变量b赋值m;
    float c=3.1415;  //为float浮点型变量c赋值3.1415;
    bool d=true;     //为布尔型变量d赋值true;
    return 0;
}

给你做了个解释,希望采纳