CodeBlanks Logo Icon CodeBlanks

C veri türleri

  • Go kursu
  • İleri seviye
  • Ders 15/68
  • 4 dk

C.int, C.char gibi türleri öğrenirsin.

C veri türleri

C türleri Go'da C.int, C.long, C.double, C.char gibi adlarla görünür. Bunlar Go'nun int veya float64 türleriyle aynı değildir; açık dönüşüm gerekir.

var a C.int = 5
b := int(a) * 2      // C.int → int
c := C.double(1.5)   // float64 → C.double

Boyutlar platforma göre değişebilir: C.long Linux'ta 8, Windows'ta 4 bayttır.

Struct ve enum

C'deki struct nokta Go'da C.struct_nokta olarak kullanılır; alanlarına doğrudan erişirsin. enum sabitleri de C.AD biçiminde gelir.

/*
struct nokta { int x; int y; };
*/
import "C"

var p C.struct_nokta
p.x = 3

Uygulama Tür dönüşümü

Önsözde double yarim(double x) { return x / 2; } tanımla. v := 9.0 değerini C.double'a çevirip fonksiyona ver, sonucu float64'e çevirip yazdır.

Başlangıç kodu

main.go
package main

/*
// C kodu buraya
*/
import "C"

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

/*
double yarim(double x) { return x / 2; }
*/
import "C"

import "fmt"

func main() {
    v := 9.0
    r := float64(C.yarim(C.double(v)))
    fmt.Println(r)
}

Beklenen çıktı

4.5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 C fonksiyonu <code>double</code> döndürüyorsa Go tarafında nasıl <code>float64</code> elde edersin?

  • C.float64(C.f())
  • float64(C.f()) Doğru cevap
  • C.f().(float64)
  • Dönüşüm gerekmez

Açıklama: C.double ayrı bir türdür; Go tarafında kullanmak için float64(...) ile açıkça dönüştürülür.

2 C türüne dönüştür

Soru
x := 10
r := C.kare(C.____(x))
Cevap
x := 10
r := C.kare(C.int(x))

Açıklama: Go int değeri C fonksiyonuna verilmeden önce C.int'e dönüştürülür.

3 C ve Go türleri

Kavram Anlamı
C.int int32 boyutunda
C.double float64 karşılığı
C.char Tek bayt
C.struct_nokta C struct'ı

İleri seviye bölümündeki tüm dersler