同时将字符串值赋予整数会发生什么?

在我的C程序中,我在一个整数变量中分配了一个字符串,并且我用百分比%s打印,它将带警告整数的字符串打印到指针而没有强制转换,并用%d打印,它打印134513904然后我更改了我的字符串值并打印%d“ 134513904”的打印此值是什么,以及整数变量如何在int变量中存储字符串值?

enter code here
         #include<stdio.h>
            main()
{
        int a="naveen";
        printf("%d\n",a);
        printf("\n%s\n",a);
        if("naveen")
        {
                printf("hi");
       }
int_point.c: In function ‘main’:

int_point.c:22:8:警告:初始化会从指针生成整数,而无需强制转换[默认启用]   int a =“ naveen”;         ^ int_point.c:24:2:警告:格式“%s”期望的类型为“ char *”,而参数2的类型为“ int” [-Wformat =]   printf(“ \ n%s \ n”,a);   ^ 134513920

纳文 嗨

xutuzi 回答:同时将字符串值赋予整数会发生什么?

以下内容为StructType(分配了一个指针(不是字符串):

s

这意味着以下内容为const char *s = "navven"; 分配了一个指针(不是字符串):

a

计算机并没有真正看到指针和数字之间的区别。它们都是适合其寄存器的东西。有些人利用这一事实。因此,尽管编译器警告您做错了事,但仍然可以让您将指针视为数字。

如果int a = "naveen"; a,则以指针的值结尾。那是不安全的。不完全的。虽然不能安全地使用int,但是可以安全地使用int

intptr_t

输出:

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>

int main(void) {
    const char *p1 = "naveen";
    printf("%p %s\n",p1,p1);

    intptr_t i = (intptr_t)p1;
    printf("0x%" PRIxPTR "\n",i);

    const char *p2 = (const char*)i;
    printf("%p %s\n",p2,p2);

    return 0;
}
本文链接:https://www.f2er.com/3154846.html

大家都在问