在下面的例子中,如果取消注释float f = 0.0;,
和更换return(0.0 ? 1 : 0);用return(f ? 1 : 0);.
输出是NIL.
这是我的代码:
/* file main.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
cl -W4 -MTd -O2 -TC main.c -Fetest */
#include <stdio.h>
int my_func(void)
{
/* float f = 0.0; */
return(0.0 ? 1 : 0);
}
int main(void)
{
printf("%s\n", ( my_func() ? "ONE" : "NIL") );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在32位Windows计算机上,使用Visual Studio,此代码输出:
ONE
Run Code Online (Sandbox Code Playgroud)
my_func() …我阅读了return函数调用之间的值,
并尝试使用以下代码片段:
/* file structaddr.c */
#include <stdio.h>
#define MSIZE 10
struct simple
{
char c_str[MSIZE];
};
struct simple xprint(void)
{
struct simple ret = { "Morning !" };
return ret;
}
int main(void)
{
printf("Good %s\n", xprint().c_str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译代码时没有错误和警告.
使用GCC 4.4.3(Ubuntu 4.4.3-4ubuntu5.1)和Visual C++编译器进行测试.
gcc -m32 -std=c99 -Wall -o test structaddr.c
cl -W3 -Zi -GS -TC -Fetest structaddr.c
Run Code Online (Sandbox Code Playgroud)
输出:
早上好!
我对结果感到有些困惑.
代码写得正确吗?
我的问题 :
函数return值的可见性是什么(上例中的数组
struct),以及如何正确访问它们?
哪里结束了一生的return价值?
C有一个预定义的宏__DATE__,它显示已编译源文件的日期.
日期以"Mmm dd yyyy"格式显示.
有没有办法使用宏格式化这个日期?
以这种格式"yyyy Mmm dd".
而不是:
2013年7月19日
应该 :
2013年7月19日
我有一个float变量,需要作为uint8_t传递给函数.
如何转换回浮动原始值.
码:
bool SetAnalog(uint8_t number, float voltage, MessagePriority priority, Callback clbck)
{
uint8_t args[2];
args[0] = number;
memcpy(&(args[1]),&voltage,sizeof(float));
PTCLoopOutMessage* message = parent()->GetLoopOutMessage(this,
this->address(),
_OutputVoltage,
"DACVoltage",
args,
sizeof(args),
Device,
priority);
message->SetCallback(clbck);
return ProcessOutMessage(message);
}
Run Code Online (Sandbox Code Playgroud)
我试图从uint8_t数组中取回浮点原始值并需要分配到探测[channel]
uint8_t channel = message->GetOutMessage()->GetData()->data[0];
unsigned char* value = &message->GetOutMessage()->GetData()->data[1];
memcpy(&__output.output.probe[channel].dac, value, sizeof(float));
Run Code Online (Sandbox Code Playgroud)
我总是得到0的价值,
请帮忙
这是我的文件1,名为main.c
#include <stdio.h>
#include <stdlib.h>
#define MONTHS 12
void ChangeDay(void);
int* days;
int main(void)
{
days = (int*) malloc(MONTHS * sizeof(int));
if(days != NULL)
ChangeDay();
else
return 1;
printf("%2d.\n", days[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
全局变量days被声明为指向type的指针int,
malloc用于为12个整数分配空间.
这是我的文件2,名为day.c
int days[];
void ChangeDay(void)
{
days[0] = 31;
}
Run Code Online (Sandbox Code Playgroud)
ChangeDay调用该函数时,十进制值31将分配给数组天的第一个元素.
这是代码输出:
root @ where:~gcc -m32 -Wall -o day main.c day.c
day.c:1:warning:数组'days'假设有一个元素
root @ where:〜./ day分段错误
如果你向我解释这个结果,我将不胜感激.
我的问题: