小编kap*_*dit的帖子

是否可以将char指针指定给浮点值?

我试图在Visual Studio中执行以下代码:

int main()
{
    float f1 = 15.23;
    char *ptr = &f1;

    printf("%c", *(ptr));

    getch();
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

编译错误:错误C2440:'初始化':无法从'float*__ w64'转换为'char*'

这有什么具体原因吗?为什么不允许这样做?

c pointers char floating-point-conversion

2
推荐指数
1
解决办法
3033
查看次数

什么是微控制器中的上拉和下拉电阻

为什么上拉和下拉电阻连接到引脚.如何将引脚配置为上拉和下拉或中断源.

embedded

1
推荐指数
1
解决办法
2121
查看次数

运算符“ ++”的不允许操作数[MISRA 2012规则10.1,必填]

我正在尝试为其他人编写的模块修复Misra警告。我观察到++正在对进行操作enum

我提到了关于同一主题的SE问题。如何解决此错误?我是否需要建议模块所有者来更改实现?

#include <stdio.h>

typedef enum
{  
    COMPARE = 0,
    INCONSISTENT = 10,
    WRITE,
    READ,
    FINISHED  
}TestsType;

static TestsType CurrentTest;

void fun1(void)
{

    if(READ != CurrentTest)
    {

            CurrentTest++;
    }
    else
    {
            CurrentTest = FINISHED;
    }
}

int main(void) {
    // your code goes here

    CurrentTest = COMPARE;
    fun1();
    printf("%d", CurrentTest);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我将enum这样的代码故意保留在代码中以了解任何影响。但是,在实际代码中,如下所示。

typedef enum
{  
        COMPARE,
        INCONSISTENT,
        WRITE,
        READ,
        FINISHED  
}TestsType;
Run Code Online (Sandbox Code Playgroud)

c enums misra pc-lint

1
推荐指数
1
解决办法
78
查看次数

为什么我们不能从C中的函数返回多个值?理由好吗?

如果可能,那么如何返回多个值.它不能因为返回是通过控制器或CPU中的累加器完成的.

这是正确的理由吗?

c

0
推荐指数
1
解决办法
2383
查看次数

子进程中使用 execl 的 waitpid 与 ECHILD 一起返回 -1?

如果我使用 execl 是可能需要时间完成的子进程,我什么时候需要使用 waitpid?

当我在父级中使用 waitpid 时,它让我的孩子运行,因为 waitpid 的返回值为 0。一段时间后,我试图在另一个函数中使用 waitpid,它用 ECHILD 返回 -1。如果我不确定天气孩子是否完成,我应该什么时候使用 waitpid?

//pid_t Checksum_pid = fork();
Checksum_pid = fork();

if (Checksum_pid == 0)
{
    execl(path, name, argument as needed, ,NULL);
    exit(EXIT_SUCCESS);     
}
else if (Checksum_pid > 0)
{ 
    pid_t returnValue = waitpid(Checksum_pid, &childStatus, WNOHANG);

    if ( returnValue > 0)
    {
        if (WIFEXITED(childStatus))
        {
            printf("Exit Code: _ WEXITSTATUS(childStatus)") ;               
        }
    }
    else if ( returnValue == 0)
    {
        //Send positive response with routine status running (0x03)
        printf("Child process …
Run Code Online (Sandbox Code Playgroud)

c linux fork os.execl waitpid

0
推荐指数
1
解决办法
1万
查看次数

宏的类型转换以优化代码

致力于优化代码。将宏类型转换char为减少内存消耗是个好主意吗?这样做可能有什么副作用?

例子:

#define TRUE 1 //non-optimized code 
sizeof(TRUE) --> 4

#define TRUE 1 ((char) 0x01) //To optimize 
sizeof(TRUE) --> 1

#define MAX 10 //non-optimized code 
sizeof(MAX) --> 4

#define MAX ((char) 10) //To optimize 
sizeof(MAX) --> 1
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

0
推荐指数
1
解决办法
2312
查看次数

定义了类似函数的宏“REPORT_ERROR”[MISRA 2012 指令 4.9,建议]

我已经定义了MACRO,它将调用该函数并传递参数。对于这种情况,低于 MISRA 警告。难道不允许吗?如何避免这种情况?

调用下面的函数有什么优点MACRO

#define REPORT_ERROR(Id, Error) ReportErr((uint16)21, (uint8)0, (uint8)Id, (uint8)Error)

void ReportErr(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId)
{

  // function - body

}
Run Code Online (Sandbox Code Playgroud)

c lint misra

0
推荐指数
1
解决办法
1214
查看次数

C 中的 64 位整数声明

我试图用 unsigned long long 数据类型在 C 中声明 64 位变量,但它不起作用并且行为类似于 uint32 位变量。访问/检查 32 以上位的解决方案是什么?

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

int main() {
    // Write C code here
    printf("Hello world");
    unsigned long long temp = 0x1234567890123456ULL;
    unsigned long long temp2 = temp >> 1;
    
    uint64_t var = 0x1234567890123456; 
    
    printf("\n%x", (long long) temp); 
    printf("\n%x", (long long) temp2); 
    printf("\n%x", 1ULL << 31ULL);
    printf("\n%x", 1ULL << 32ULL);
    
    printf("\n%x", var); 
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

你好,世界

90123456

48091a2b

80000000

0

90123456

c types

0
推荐指数
1
解决办法
58
查看次数

如何实现三元运算符a?b:c,不使用if else和分支

我想在不使用if else语句的情况下实现三元运算符。需要使用按位运算符而不使用三元运算符和if else语句来实现。

a= true --> res = b
a= false --> res = c
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation ternary-operator

-2
推荐指数
1
解决办法
944
查看次数

如何在不使用任何函数的情况下在C中编写"Hello world"?

我找到了在quora上做到这一点的方法,但我无法理解.

You can achieve this using opcodes.....

const int main[] = {  -443987883, 440, 113408, -1922629632,  4149, 899584, 84869120, 15544,  266023168, 1818576901, 1461743468, 1684828783,  -1017312735};
Now follow below steps....
Save that in hello.c
then gcc -o hello hello.c
then ./hello
Hola..... Hello World!
Run Code Online (Sandbox Code Playgroud)

操作码将根据其架构特定于特定硬件和控制器.如果我理解正确,那么对于不同的硬件和平台,操作码将是不同的.所以这不是一般的解决方案.但是我试图在IDEone上编译它并且它给出了运行时错误.有没有通用的解决方案?

关于SE的类似问题

c assembly

-4
推荐指数
1
解决办法
167
查看次数

如何使用单个char指针将float转换为字符串?

我有这样的问题:

char *ptr;
float f1 = 12.34;
Run Code Online (Sandbox Code Playgroud)

现在使用这个char*ptr,我想将这个float值转换为string,可以使用这个指针"ptr"在printf中显示.

表示:12.34 ==>"12.34"

我不需要使用任何其他指针或临时变量.我不能用snprintf.

c c++ floating-point pointers

-6
推荐指数
1
解决办法
189
查看次数