小编Vin*_*uda的帖子

为什么这个函数指针在没有警告或错误的情况下工作?

知道这个电话:

pow(4);
Run Code Online (Sandbox Code Playgroud)

将生成此错误消息:

 error: too few arguments to function ‘pow’
Run Code Online (Sandbox Code Playgroud)

我正在学习函数的指针,当看到下面的代码工作时,我感到很惊讶.但为什么?

#include<stdio.h>
#include<math.h>

void aux(double (*function)(), double n, double x);

int main(void)
{
    aux(pow, 4, 2); 

    aux(sqrt, 4, 0);

    return 0;
}

void aux(double (*function)(double), double n, double x)
{   
    if(x == 0)
        printf("\nsqrt(%.2f, %.2f): %f\n", n, x, (*function)(n));  
    else
        printf("\npow(%.2f, %.2f): %f\n", n, x, (*function)(n));  
}
Run Code Online (Sandbox Code Playgroud)

我编译使用:

gcc -Wall -Wextra -pedantic -Wconversion -o test test.c -lm
Run Code Online (Sandbox Code Playgroud)

结果是:

pow(4.00, 2.00): 16.000000

sqrt(4.00, 0.00): 2.000000
Run Code Online (Sandbox Code Playgroud)

如果我将第一次调用的第三个参数更改aux为3,结果将更改为:

pow(4.00, 3.00): 64.000000 …
Run Code Online (Sandbox Code Playgroud)

c function-pointers

22
推荐指数
4
解决办法
1505
查看次数

编译sdl c程序时“sdl-config”是什么意思?

在许多教程中我看到sdl-config编译 sdl c 程序。在c++的例子中我也见过。这是来自此处的示例。

g++ sdlExample.cpp `sdl-config --cflags --libs` -o sdlExample
Run Code Online (Sandbox Code Playgroud)

是什么sdl-config --cflags --libs意思?为什么里面有口音?

c c++ gcc sdl compilation

6
推荐指数
2
解决办法
3357
查看次数

这是编译器编译的顺序

好吧,我想知道编译器“读取”代码的顺序是什么。例如:

假设我有以下代码片段:

int N, M;

N = M = 0;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器会为 N 和 M 分离一部分内存(int,4 个字节),然后在第二行(我的疑问来自哪里),分为两件事,一:

编译器“读取”N 等于M 并且都等于0。

或者

编译器“读取”零,将其放入 M 的内存中,然后获取 M 的值,即零,并将其放入 N 的内存中。

换句话说,是从右到左,还是从左到右?

我不知道我的疑问是否清楚,但在我所做的测试中:

int i=0; /*I declared the variable i, and assign zero value to it*/

printf("%d", i++); /*Prints 0*/

printf("%d", i); /*Prints 1*/
Run Code Online (Sandbox Code Playgroud)

我理解上面的代码,在第二行,编译器似乎(根据我的理解)从左到右“读取”,将 i 值分配给类型 %d ,并且在打印之后,变量 i 递增,因为在第三行打印为1。

下面的代码片段反转了 ++ 的位置:

int i=0; /*I declared i variable to zero*/

printf("%d", ++i); /*Prints 1*/

printf("%d", i); /*Prints 1*/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在第二行,(根据我的理解)编译器从左到右“读取”,当编译器读取将打印的内容时(留在逗号之后,这个空间的名称是什么?) ,首先“读取”++ 并递增下面的变量(在本例中为 i),然后分配给要打印的 …

c c++ compiler-construction compilation

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

如何使用张量流复制经过训练的模型?

我有一个包含模型规范和一些训练和评估模型的方法的课程。我想复制一个经过训练的对象,我尝试过copy.deepcopy()但没有成功。

下面的代码只是一个示例,但我希望它适用于使用以下相同想法的任何模型:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse
import sys
import copy
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
FLAGS = None

class Model():

    def __init__(self):
        self.x = tf.placeholder(tf.float32, [None, 784])
        self.W = tf.Variable(tf.zeros([784, 10]))
        self.b = tf.Variable(tf.zeros([10]))
        self.y = tf.matmul(self.x, self.W) + self.b
        self.y_ = tf.placeholder(tf.float32, [None, 10])
        self.cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=self.y_, logits=self.y))
        self.train_step = tf.train.GradientDescentOptimizer(0.5).minimize(self.cross_entropy)

    def train(self, mnist, sess):
        for _ in range(1000):
            batch_xs, batch_ys = mnist.train.next_batch(100)
            sess.run(self.train_step, …
Run Code Online (Sandbox Code Playgroud)

python oop tensorflow

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

时间序列预测的延迟问题

我在使用神经网络预测时间序列时遇到问题。一些预测数据与预期数据相符,如下所示:(黑色是实时序列,蓝色是我的神经网络的输出)

澳大利亚能源需求 时间序列:澳大利亚能源需求。

但同样的代码,对于其他时间序列,预测数据与预期数据不符,并且有一个单位的延迟,如下:

在此输入图像描述 时间序列:沃尔玛股票价格。 在此输入图像描述 时间序列:美元 Libra 兑换。

我找到了一些关于神经网络的一些变体的文章,并在结果部分显示了像我的结果一样具有延迟的图,如下所示:

在此输入图像描述 时间序列:美元 Libra 兑换。(文章链接:http://www.sciencedirect.com/science/article/pii/S1877050915015793

有人知道这是一种常见行为还是我的代码有问题?大约三个月前,我遇到了这个问题,因为我试图找出代码中的一些错误,但没问题。

谢谢,我很感激任何提示。

matlab machine-learning time-series neural-network forecasting

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

每个 ctrl + 键及其信号的行为是什么?

给定一个信号列表(kill -l 可以给你),我想知道所有可以引发其中一个信号的 ctrl + 键。例如,当在终端上运行前台进程时,ctrl+c 会引发 SIGINT。是否可以 ?ctrl+键映射到系统上的哪里?如果有一个C可以显示的功能就更好了。

c linux bash signals ctrl

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

为什么我的代码没有限制?

那是我的代码:

#include<stdio.h>

int main()
{
    int vet[10], i;

    for(i=30; i<=45; i++)
    {
        scanf("%d", &vet[i]);
    }

    for(i=30; i<=45; i++)
        printf(" %d ", vet[i]);

    for(i=30; i<=45; i++)
        printf(" %x", &vet[i]);

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

我在内存中只声明了10个int类型的位置,但是我得到了更多,所以发生了什么?它是内存溢出?

并且类型%x是否正确打印内存地址?

输入是:

1
2
3
4
5
6
7
8
9
10   /*It was to be stoped right here !?*/
11
12
13
14
15
16
Run Code Online (Sandbox Code Playgroud)

并返回:

1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  /*I put space to indent*/ …
Run Code Online (Sandbox Code Playgroud)

c memory arrays

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