下面显示的问题是面试问题
问)你有一个数据类型,比如说C中的X.
要求是获取数据类型的大小,而不声明该类型的变量或指针变量,
而且,当然不使用sizeof运算符!
我不确定此问题是否曾在SO中提出过.
谢谢并问候Maddy
我意识到我想做的事情并不安全.但我只是在做一些测试和图像处理,所以我的重点是速度.
现在,这段代码为我提供了32位像素值类型的相应字节.
struct Pixel {
unsigned char b,g,r,a;
};
Run Code Online (Sandbox Code Playgroud)
我想检查一下像素是否低于某个值(例如r, g, b <= 0x10).我想我只想条件测试像素的位和位0x00E0E0E0(我可能有错误的字节顺序)来获得暗像素.
我没有使用这个丑陋的混乱(*((uint32_t*)&pixel))来获取32位无符号整数值,而是认为应该有一种方法让我设置它以便我可以使用pixel.i,同时保持使用引用绿色字节的能力pixel.g.
我可以这样做吗?这不起作用:
struct Pixel {
unsigned char b,g,r,a;
};
union Pixel_u {
Pixel p;
uint32_t bits;
};
Run Code Online (Sandbox Code Playgroud)
我需要编辑我现有的代码来说明pixel.p.g绿色字节.如果我这样做会发生同样的情况
union Pixel {
unsigned char c[4];
uint32_t bits;
};
Run Code Online (Sandbox Code Playgroud)
这也可以工作,但我仍然需要更改所有索引到的内容c,这有点难看,但如果我真的需要,我可以使用宏.
我们说我有一个WAV文件.在此文件中,是精确1秒间隔的一系列正弦音.我想使用FFTW库按顺序提取这些音调.这特别难吗?我该怎么做?
另外,将这种音调写入WAV文件的最佳方法是什么?我假设我只需要一个简单的音频库来输出.
我选择的语言是C.
我有一个非常大的嵌套for循环,其中对浮点数执行一些乘法和加法.
for (int i = 0; i < length1; i++)
{
double aa = 0;
for(int h = 0; h < 10; h++)
{
aa += omega[i][outsideGeneratedAddress[h]];
}
double alphaOld = alpha;
alpha = Math.Sqrt(alpha * alpha + aa * aa);
s = -aa / alpha;
c = alphaOld / alpha;
for(int j = 0; j <= i; j++)
{
double oldU = u[j];
u[j] = c * oldU + s * omega[i][j];
omega[i][j] = c * omega[i][j] - s …Run Code Online (Sandbox Code Playgroud) char a[]="string";和之间有什么区别char *p="string";?
这个非常简单的问题可能是一个非常简单的答案:
我正在阅读Pratta的"C Primer Plus",他一直在使用这个例子
while (scanf("%d", &num) == 1)...
Run Code Online (Sandbox Code Playgroud)
== 1真的有必要吗?似乎可以写一下:
while (scanf("%d", &num))
Run Code Online (Sandbox Code Playgroud)
似乎相等测试是不必要的,因为scanf返回读取的对象数,1将使while循环成为真.是确保读取的元素数量正好为1还是完全多余的原因?
有没有办法知道你的程序是否在C++(甚至C)中有未定义的行为,而不是记住整个规范?
我问的原因是我注意到很多程序在调试中工作但没有发布是由于未定义的行为.如果有一个工具来至少帮助发现UB会很好,所以我们知道存在问题的可能性.
如何创建一个函数,在每个调用中生成一个随机整数?该数字必须尽可能最随机(根据均匀分布).它只允许使用一个静态变量和最多3个基本步骤,其中每个步骤仅包含arity 1或2的一个基本算术运算.
例:
int myrandom(void){
static int x;
x = some_step1;
x = some_step2;
x = some_step3;
return x;
}
Run Code Online (Sandbox Code Playgroud)
基本算术运算是+, - ,%,而不是xor,或左移,右移,乘法和除法.当然,不允许使用rand(),random()或类似的东西.
在搜索CI中生成随机数的教程时发现了这个主题
当我尝试使用rand()没有参数的函数时,我总是得到0.当我尝试使用rand()带参数的函数时,我总是得到值41.每当我尝试使用arc4random()和random()函数时,我都会收到LNK2019错误.
这就是我所做的:
#include <stdlib.h>
int main()
{
int x;
x = rand(6);
printf("%d", x);
}
Run Code Online (Sandbox Code Playgroud)
这段代码总是生成41.我哪里错了?我正在运行Windows XP SP3并使用VS2010命令提示符作为编译器.
这个问题在我的求职面试中......我只是想看看我是否提供了所有细节......