我必须编写一个程序,可以计算2 power 2010和找到数字之和的权力.例如:
if `2 power 12 => gives 4096 . So 4+0+9+6 = 19 .
Run Code Online (Sandbox Code Playgroud)
现在我需要找到相同的 2 power 2010.
请帮我理解.
我的编译器(gcc)给了我这个警告.请帮我理解它的含义:
警告:trigraph ??/ignored,使用-trigraphs启用
#include <stdio.h>
int main()
{
int a=8,b=9,c;
c=a+++b;
printf("%d%d%d\n",a,b,c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的程序输出a=9 b=9和c=17.在a+++b为什么编译器会a++,然后用增加b.为什么不考虑a +和
++b?是否有特定的名称a+++b.请帮我理解.
静态局部变量存储在内存中的哪个位置?只能在声明它们的函数内访问局部变量.
全局静态变量进入.data段.
如果静态全局变量和静态局部变量的名称相同,编译器如何区分它们?
我正在寻找memcpy.c的实现,我发现了一个不同的memcpy代码.我无法理解他们为什么这样做(((地址)s)|((ADDRESS)d)| c)&(sizeof(UINT) - 1)
#if !defined(__MACHDEP_MEMFUNC)
#ifdef _MSC_VER
#pragma function(memcpy)
#undef __MEMFUNC_ARE_INLINED
#endif
#if !defined(__MEMFUNC_ARE_INLINED)
/* Copy C bytes from S to D.
* Only works if non-overlapping, or if D < S.
*/
EXTERN_C void * __cdecl memcpy(void *d, const void *s, size_t c)
{
if ((((ADDRESS) s) | ((ADDRESS) d) | c) & (sizeof(UINT) - 1)) {
BYTE *pS = (BYTE *) s;
BYTE *pD = (BYTE *) d;
BYTE *pE = (BYTE *) (((ADDRESS) s) + c); …Run Code Online (Sandbox Code Playgroud) 我正在尝试一个小例子来了解静态外部变量及其用途.静态变量属于局部范围,外部变量属于全局范围.
static5.c
#include<stdio.h>
#include "static5.h"
static int m = 25;
int main(){
func(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
static5.h
#include<stdio.h>
int func(val){
extern int m;
m = m + val;
printf("\n value is : %d \n",m);
}
Run Code Online (Sandbox Code Playgroud)
gcc static5.c static5.h
o/p:
static5.c:3: error: static declaration of m follows non-static declaration
static5.h:3: note: previous declaration of m was here
Run Code Online (Sandbox Code Playgroud)
EDITED
正确的程序:
a.c:
#include<stdio.h>
#include "a1_1.h"
int main(){
func(20);
return 0;
}
a1.h:
static int i = 20;
a1_1.h:
#include "a1.h"
int func(val){
extern …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
2,5
Run Code Online (Sandbox Code Playgroud)
我无法理解如何*(ptr-1)评估为5(正确的输出).但是,当我手动做的是1,我的理解是*(ptr-1)会得到评估,以*(&a+1-1)这将
*(&a)是1.
请帮我理解这个概念.
我的编译器(gcc)显示警告
#include<stdio.h>
struct s{
unsigned char *p;
};
int main() {
struct s a = {"??/??/????"}; //warning
printf("%s",a.p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
警告:初始化中的指针目标在签名方面有所不同
请帮我解释为什么会出现此警告.
package android.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class Android_eg1 extends Activity {
Button bt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt=(Button)findViewById(R.id.click);
bt.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show();
}
});
} //onCreate()
}//class
Run Code Online (Sandbox Code Playgroud)
我是java的新手,我知道核心java的基础知识.这是我尝试通过按钮类了解事件处理的示例程序.我无法理解这一部分:
"bt.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show();
}
});"
Run Code Online (Sandbox Code Playgroud)
在setOnClickListener(参数)中,为什么它们给出一个函数定义?(public void onClick(View v)})
这可以接受吗?
*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x00000000007646b0 ***
*** glibc detected *** ./a.out: malloc(): memory corruption: 0x00000000007635a0 ***
Run Code Online (Sandbox Code Playgroud)
我收到了上述错误.但是我确定我在释放后没有使用内存.为什么我会收到上述错误?